DataList编辑模式中的FindControl

时间:2009-04-11 18:03:44

标签: file-upload datalist findcontrol edititemtemplate

作为一个新的.net / C#web begginner,当我尝试使用FindControl时,我总是被绊倒。 Blam -flat在我脸上。这是我当前的FindControl问题:

我有一个.aspx页面和Form,然后是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.";
     }

当然,我正在为FileUpload和Label获取“对象引用未设置为对象的实例”。

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

我使用FindControl的唯一方法是:

标签thumbnailUploadLabel = DataList1.FindControl(“thumbnailUploadLabel”)作为标签;

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

(我也看到那里应该使用FindControl的“递归”代码更容易。哈!我在C#非常环保,我甚至不知道如何将它们融入我的项目中。)

感谢大家一起来看看。

1 个答案:

答案 0 :(得分:1)

我知道这是一件很晚的事情,但我一直在寻找要回答的问题....你现在必须想出来但仍然

如果您在代码中添加这些行

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.";
        }
    }

这将为您正在编辑的行找到合适的控件...

还要使您的Datalist退出UPdate面板,因为更新面板与FileUpload不兼容。如果您这样做,代码将会运行,但它始终显示 thumbnailImageUpload.HasFile False。