Solved

Can I call postback if a file has been added to the fileupload

Posted on 2008-10-15
8
521 Views
Last Modified: 2013-12-17
My code works when a drop downlist triggers postback on my page but the ddl is used before the fileupload. How can I call postback when a file has been browsed and put into the file upload. Or how could I do this differently? Basically I want to stop the user submiting the information they have inputted on my page if they have not attached the file. This is why I im making the button invisible if  the path is still present in the file upload. Any ideas would superb...thanks!
if (FileUploadControl.HasFile)

 {

  btnSubmit.Visible = false;

 }

 else

 {

  btnSubmit.Visible = true;

 }

Open in new window

0
Comment
Question by:dwezil
  • 4
  • 3
8 Comments
 
LVL 5

Expert Comment

by:johnaryan
ID: 22719650
2 ways of doing this
1. You could use javascript on the web page to verify that a file has been inputted.

2. Check the value of the FileUploadControlin the PageInit() event rather than the page load event.
function ValidateDisplayName()

{  

    if(document.all.FileUploadControl.value == "")

    {

        alert("You must select a file to upload before continuing.");

       return false; 

    }

    return true;  

}
 

 <input id="inputUploadFile" type="file" runat="server" size="50" onkeydown="return false;"

                                        onchange="ValidateDisplayName()" />

Open in new window

0
 
LVL 3

Expert Comment

by:sajain84
ID: 22719686
Hey!

What I gather is that you want to be informed when a file is selected or not.
The code you are using will not work because that gets fired only when there IS a postback.

You can do this using javascript.
You can detect whether a file has been selected or not by adding the following line of code on your Page_Load

Put the Submit button in a div and keep the div hidden by default.

Hope this helps. If not, ping me back.

// Put this on Page_Load

FileUpload1.Attributes.Add( "onchange", "return ShowButton()"); 
 

// Put this in the aspx page for the submit button

<div id="divButton" style="display:none">

<asp:Button ID="btnSubmit" runat="Server" Text="Submit">

</div>
 

// The javascript code which can toggle the button - Again needs to go in the aspx page
 

function ShowButton() {

var button = document.getElementById('divButton');

button.style.display = "";

}

Open in new window

0
 

Author Comment

by:dwezil
ID: 22719769
It doesnt like div button for some reason error is:

Too many characters in character literal

plus Ive put the java in my cs page because it wouldnt work in the aspx. You sure it goes there?

Thank you!
0
 
LVL 3

Expert Comment

by:sajain84
ID: 22719986
Okay.
My code is as follows which I have tested to be working.

Please check it out and let me know if it helps.
You will need to modify your code to look like mine.

// The ASPX file

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testjs.aspx.cs" Inherits="testjs" %>
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

    

    <script type="text/javascript">

        function ShowButton() {

            var box = document.getElementById('divButton');

            box.style.display = "";

        }

            

    </script>

    

</head>

<body style="background-color:White">

    <form id="form1" runat="server">

    <div>

        <asp:FileUpload ID="fupDemo1" runat="server" />

        

        <div id="divButton" style="display:none">

            <asp:Button ID="btnDemo" runat="server" Text="Click me" />

        </div>

    </div>

    </form>

</body>

</html>
 
 

// The CODE BEHIND FILE

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;
 

public partial class testjs : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        fupDemo1.Attributes.Add("onchange", "return ShowButton()");

    }

}

Open in new window

0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

Author Comment

by:dwezil
ID: 22720580
Ok well that works but it does the opposite of what I want. If there is text in the box i want the button to be invisble. So when the file is attached and the text is cleared the button will appear. Plus I want the button there from load.

Thank you!
0
 
LVL 3

Accepted Solution

by:
sajain84 earned 500 total points
ID: 22720639
Oh. I'm sorry - I misunderstood your question.

You could just reverse the code in that case.
I've attached the corrected code snippet below.

Do let me know if you need some more help.

// The ASPX file

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testjs.aspx.cs" Inherits="testjs" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

    

    <script type="text/javascript">

        function HideButton() {

            var box = document.getElementById('divButton');

            box.style.display = "none";

        }

            

    </script>

    

</head>

<body style="background-color:White">

    <form id="form1" runat="server">

    <div>

        <asp:FileUpload ID="fupDemo1" runat="server" />

        

        <div id="divButton" style="display:">

            <asp:Button ID="btnDemo" runat="server" Text="Click me" />

        </div>

    </div>

    </form>

</body>

</html>

 

 

// The CODE BEHIND FILE

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class testjs : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        fupDemo1.Attributes.Add("onchange", "return HideButton()");

    }

}

Open in new window

0
 

Author Comment

by:dwezil
ID: 22720683
Its all good I sorted it out. Thank you for you help
0
 

Author Comment

by:dwezil
ID: 22720696
Yeah i did the same as what youv'e just posted, cheers!
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently while returning home from work my wife (another .NET developer) was murmuring something. On further poking she said that she has been assigned a task where she has to serialize and deserialize objects and she is afraid of serialization. Wha…
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now