Solved

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

Posted on 2008-10-15
8
526 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
How our DevOps Teams Maximize Uptime

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

 
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
 

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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
How to make a Gridview column hidden (visibility false) in the HTML code? 2 20
C# Gridview 1 49
SSIS Start 2 21
Need to sort columns in DataGridView 4 14
IP addresses can be stored in a database in any of several ways.  These ways may vary based on the volume of the data.  I was dealing with quite a large amount of data for user authentication purpose, and needed a way to minimize the storage.   …
Flash (http://en.wikipedia.org/wiki/Adobe_Flash) has evolved over the years to where it has become a masterful tool for displaying content screen.  It has excellent layout placement, UI precision as well as rendering capabilities. This, along with t…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

820 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