将作为新的.NET / C#网络begginner,我总是绊倒,当我尝试使用的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的唯一方法是这样的:

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

但是,当然,这是抛出错误“不设置到对象的实例对象引用”。任何帮助非常赞赏。

(我也看到了“递归”代码在那里,应该使用的FindControl更容易做出。哈!我很绿,在C#中,我甚至不知道如何将那些到我的项目。)

感谢所有在此考虑看看。

有帮助吗?

解决方案

我迟到知道这是一个地狱很多,但我一直在寻找问题的回答....你必须现在想通,但仍

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

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 假。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top