Solved

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

Posted on 2008-10-15
8
519 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
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

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

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
The object model of .Net can be overwhelming at times – so overwhelming that quite trivial tasks often take hours of research. In this case, the task at hand was to populate the datagrid from SQL Server database in Visual Studio 2008 Windows applica…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

708 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

10 Experts available now in Live!

Get 1:1 Help Now