1

作为一个新的 .net/C# web 初学者,当我尝试使用 FindControl 时,我总是被绊倒。Blam-flat 在我的脸上。这是我当前的 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.";
     }

因此,我当然会为 FileUpload 和标签获得“对象引用未设置为对象的实例”。

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

我使用 FindControl 的唯一方法是:

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

但这当然会引发“对象引用未设置为对象的实例”错误。很感谢任何形式的帮助。

(我还看到了应该使 FindControl 更容易使用的“递归”代码。哈!我对 C# 非常熟悉,以至于我什至不知道如何将它们合并到我的项目中。)

感谢大家看这个。

4

1 回答 1

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 排除在更新面板之外,因为更新面板与 FileUpload 不兼容。如果你这样做,代码将运行,但它总是将thumbnailImageUpload.HasFile显示为False。

于 2009-09-14T06:22:13.713 回答