none
找不到控件问题 RRS feed

  • 问题

  • ……
    TableCell cell = new TableCell();
    FileUpload imageUpload = new FileUpload();
    imageUpload.ID = "imageUpload";
    cell.Controls.Add(imageUpload);
    row.cells.Add(cell)
    table.Rows.Add(row);
    PlaceHolder1.Controls.Add(table);
    后台使用:
    protected void Button3_Click(object sender, EventArgs e)
        {
            try
            {        
                if (imageUpload.PostedFile.FileName == "")    //The name 'imageUpload' does not exist in the current context
                {
                    Response.Write("<Script>alert('请先选择上传的图片')</Script>");
                    return;
                }
                else
                {
    我用这种方法生成控件,但是在后台使用时提示找不到控件,应该如何解决?
    2010年3月4日 2:51

答案

  • <%@ Page Language="C#" AutoEventWireup="true"%>
    <%@ Import Namespace="System.Data" %>
    <script runat="server">
        
        FileUpload imageUpload = new FileUpload();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            this.holder1.Controls.Add(imageUpload);   
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(imageUpload.PostedFile.FileName);
        }
    </script>
    <!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>一般问题测试页面</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:PlaceHolder ID="holder1" runat="server"></asp:PlaceHolder>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        </form>
    </body>
    </html>
    

    知识改变命运,奋斗成就人生!
    2010年3月4日 4:33
    版主

全部回复

  • 因为控件是动态创建的,在回发后就会消失,你需要在回发的时候重新创建它们。将你的代码放到 PageLoad 事件中,不要写 if (!IsPostBack)。
    知识改变命运,奋斗成就人生!
    2010年3月4日 3:05
    版主
  • 谢谢啊,我把if (!IsPostBack)去掉了也还是一样的问题
    2010年3月4日 3:19
  • <%@ Page Language="C#" AutoEventWireup="true"%>
    <%@ Import Namespace="System.Data" %>
    <script runat="server">
        
        FileUpload imageUpload = new FileUpload();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            this.holder1.Controls.Add(imageUpload);   
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(imageUpload.PostedFile.FileName);
        }
    </script>
    <!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>一般问题测试页面</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:PlaceHolder ID="holder1" runat="server"></asp:PlaceHolder>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        </form>
    </body>
    </html>
    

    知识改变命运,奋斗成就人生!
    2010年3月4日 4:33
    版主
  • 谢谢版主,显示出来没问题了,但是点击按钮的时候提示 未将对象引用设置到对象的实例。
    protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(imageUpload.PostedFile.FileName);
        }
    好人做到底,再帮我看一下
    2010年3月4日 5:38
  • 你好!
         尝试把imageUpload定义成成员变量,而不是局部变量!
    周雪峰
    2010年3月4日 5:56
    版主
  • 可以了已经,呵呵,没事我又把postback加上去了,去了就好了

    2010年3月4日 6:10