File upload 数据列表编辑模式下的FindControl

File upload 数据列表编辑模式下的FindControl,file-upload,datalist,findcontrol,edititemtemplate,File Upload,Datalist,Findcontrol,Edititemtemplate,作为一个新的.net/C#web应用程序,当我尝试使用FindControl时,总是会被绊倒。我脸上全是责备。以下是我当前的FindControl问题: 我有一个.aspx页面和表单,然后是ajax updatePanel,其中有我的DataList(DataList1),它有一个EditItemTemplate:它有以下内容: <EditItemTemplate> <asp:Label ID="thumbnailUploadLabel" runat="server" text

作为一个新的.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>
当然,我得到的文件上传和标签是“对象引用未设置为对象实例”

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

我使用FindControl的唯一方法是:

label 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.";
        }
    }
这将为正在编辑的行找到相应的控件


另外,请将数据列表保留在更新面板之外,因为更新面板与文件上载不兼容。如果您这样做,代码将运行,但它将始终显示thumbnailImageUpload.HasFileFalse。

我知道这已经晚了很多,但我正在寻找问题的答案……您现在一定已经找到了答案,但仍然没有找到答案

如果在代码中添加这些行

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.HasFileFalse。

嘿,Pankaj,感谢您的回复。迟到总比不迟到好。我最终使用了类似于您上面发布的代码。是的,我确实发现了UpdatePanel内部的文件上载问题,修复得很好,一旦我发现,它们就不能很好地配合。另外-我发现Dean Brettle(www.Brettle.com)的NeatUpload是一个非常优雅的多文件上传对象-如果需要的话…嘿,Pankaj,谢谢你的回复。迟到总比不迟到好。我最终使用了类似于您上面发布的代码。是的,我确实发现了UpdatePanel内部的文件上载问题,修复得很好,一旦我发现,它们就不能很好地配合。另外-我发现Dean Brettle(www.Brettle.com)的NeatUpload是一个非常优雅的多文件上传对象-如果需要的话。。。