代码之家  ›  专栏  ›  技术社区  ›  Doug

数据列表编辑模式下的FindControl

  •  1
  • Doug  · 技术社区  · 17 年前

    作为一个新的.net/C#web应用程序,当我尝试使用FindControl时,总是会被绊倒。我脸上全是责备。以下是我当前的FindControl问题:

    我有一个.aspx页面和表单,然后是ajax updatePanel,其中有我的DataList(DataList1),它有一个EditItemTemplate:它有以下内容:

    <EditItemTemplate>
    <asp:Label ID="thumbnailUploadLabel" runat="server" text="Upload a new thumbnail image:"/><br />
    <asp:FileUpload ID="thumbnailImageUpload" runat="server" />
    <asp:Button ID="thunbnailImageUploadButton" runat="server" Text="Upload Now" OnClick="thumbnailUpload"/><br />
    </EditItemTemplate>
    

    在我的C#代码中,我有fileUpload对象的OnClick代码:

            protected void thumbnailUpload(object s, EventArgs e)
    
        {
    
        if (thumbnailImageUpload.HasFile)
    
          {
    
          //get name of the file & upload
    
              string imageName = thumbnailImageUpload.FileName;
    
              thumbnailImageUpload.SaveAs(MapPath("../../images/merch_sm/" + imageName));
    
              //let'em know that it worked (or didn't)
              thumbnailUploadLabel.Text = "Image " + imageName + "has been uploaded.";
             }
             else
             {
             thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
         }
    

    当然,我得到的文件上传和标签是“对象引用未设置为对象实例”。

    在OnClick事件中处理这些控件之前,找到这些控件的正确语法是什么?

    我使用FindControl的唯一方法是:

    但这当然是抛出“对象引用未设置为对象实例”错误。非常感谢您的帮助。

    (我还看到了一些“递归”代码,这些代码应该可以让FindControl的使用变得更简单。哈!我对C#非常了解,甚至不知道如何将它们整合到我的项目中。)

    1 回复  |  直到 17 年前
        1
  •  1
  •   Pankaj Kumar    16 年前

    我知道现在已经很晚了,但我一直在寻找问题的答案……你现在一定已经明白了,但仍然

    如果在代码中添加这些行

    protected void thumbnailUpload(object sender, EventArgs e)
        {
            FileUpload thumbnailImageUpload =(FileUpload)DataList1.Items[DataList1.EditItemIndex].FindControl("thumbnailImageUpload");
            Label thumbnailUploadLabel = (Label)DataList1.Items[DataList1.EditItemIndex].FindControl("thumbnailUploadLabel");
            if (thumbnailImageUpload.HasFile)
            {
    
               //Your code here
    
            }
            else
            {
                thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
            }
        }
    

    这将为正在编辑的行找到相应的控件。。。

    thumbnailImageUpload.HasFile

    推荐文章