我用一个TextBox 和 button 模仿FileUpload控件,
实现方法如下:
  1,FileUpload空件隐藏,button 点击时候,用javascript调用FileUpload控件的click方法,
    2,并且文件路径的值赋给TextBox 前面都正常实现了,但是上面的处理完了以后
点击另外的asp:Button 想做处理,但是第一次点击时候走不到服务器端代码
而且把FileUpload的内容给我清空了,第二次点击的时候才会正常走服务器端代码,
为什么?
页面代码:
<%@ Page Language="C#" MasterPageFile="~/Common/GlobalMasterPage.master" AutoEventWireup="true"
    CodeBehind="upload.aspx.cs" Inherits="Disco.DWare3.BT_Navi.BT02.upload" Title="测试" %><asp:Content ID="Content1" ContentPlaceHolderID="GlobalHeadPlaceHolder" runat="server"></asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="GlobalContentPlaceHolder" runat="server">
    <script language="javascript" type="text/javascript">
            function fileUP()
            { 
                var file = document.getElementById("<%=fileuploadImage.ClientID %>");
                file.style.display="inline";
                file.click(); 
                //document.getElementById("<%=txtFile.ClientID %>").value = file.value;
               
                //self.window.
                //document.
                return;
            } 
            function fileSet()
            {
                var file = document.getElementById("<%=fileuploadImage.ClientID %>");
                if(file.value !="")
                {
                    document.getElementById("<%=txtFile.ClientID %>").value = file.value;
                }
                file.vi
                //file.style.display="none";
                return;
            }    </script>    <table width="700px">
        <tr>
            <td id="imageTitle" bgcolor="#99CCFF" style="width: 30%" rowspan="3">
                画像
            </td>
            <td style="width: 70%">
                <asp:CheckBox ID="imageDel" runat="server" Text="画像消除" />
            </td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="txtFile" runat="server" ></asp:TextBox>
                <input id="btnFile" type="button" value="参照..."   onclick="javascript:return fileUP();" />                <asp:FileUpload ID="fileuploadImage" runat="server" Style ="display:none"/>
            </td>
        </tr>
        <tr>
            <td>
                <asp:Panel ID="ImageBox" runat="server">
                    <asp:TextBox ID="txtImage" runat="server" Enabled="False"></asp:TextBox>
                    <asp:Button ID="btnImage" runat="server" Text="画像选择" Width="148px" onClick="btnImage_Click"/>
                    &nbsp;&nbsp;&nbsp;
                    <asp:Button ID="btnImageClear" runat="server" Text="选择解除" />
                </asp:Panel>
            </td>
        </tr>
    </table>
</asp:Content>
后台代码:
namespace Disco.DWare3.BT_Navi.BT02
{
    /// <summary>
    /// 
    /// </summary>
    public partial class upload : System.Web.UI.Page
    {
        /// <summary>
        /// 画像名
        /// </summary>
        protected string FileName = string.Empty;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            FileName = txtFile.Text;
            this.fileuploadImage.Attributes.Add("onchange", "javascript:return fileSet();");
            txtFile.Attributes.Add("readonly", "readonly");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnImage_Click(object sender, EventArgs e)
        {
            this.txtFile.Text = FileName;            //a = "";
        }
    }
}