我一直在尝试解决这个问题,希望有人能给我答案!(请记住,我是这个编码的初学者)。我有一个数据库,其中一个字段是imageurl
. 我必须能够更新这个字段,并认为我可以使用 aGridView
和UpdateItemTemplate
. 我很快发现你必须使用FindControl
递归方法来这样做 - 所以我实现了代码,现在我遇到了另一个错误。
我想我知道为什么会出现错误,但不知道如何解决它。似乎在 tools.cs 文件中,控件的标识符设置为数据类型String
,但我不知道如何处理FileUpload
.
这是错误消息:
无法从“System.Web.UI.WebControls.FileUpload”转换为“字符串”
ASP.NET GridView 控件:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="DrinkCategoryID" DataSourceID="ObjectDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="DrinkCategoryID" HeaderText="DrinkCategoryID"
InsertVisible="False" ReadOnly="True" SortExpression="DrinkCategoryID" />
<asp:TemplateField HeaderText="DrinksCategoryName"
SortExpression="DrinksCategoryName">
<EditItemTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("DrinksCategoryName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
工具 (FindControl)
public static Control FindControlRecursive(Control Root, string Id)
{
if (Root.ID == Id)
return Root;
foreach (Control Ctl in Root.Controls)
{
Control FoundCtl = FindControlRecursive(Ctl, Id);
if (FoundCtl != null)
return FoundCtl;
}
return null;
}
以及 Web 表单背后的代码(保存按钮的单击事件)
protected void btnGem_Click(object sender, EventArgs e)
{
FileUpload FileUpload1 = (FileUpload)Tools.FindControlRecursive(
GridView1, FileUpload1);
//This seems to work fine
TextBox txtBox = (TextBox)Tools.FindControlRecursive(GridView1, txtBox.Text);
}