我有一个DataList,每个项目内都有一个需要保存相关textarea内容的ImageButton。我通常会使用CommandArgument标记传递参数,但描述中的文本很长,我不想将其写入命令参数中以显示所有项目。相反,我如何找到相关文本区域的ID,以便保存用户更改/输入的文本?
我尝试将'this'传递给命令参数,但我认为它不起作用,因为它只传递按钮的对象而不是整个项目。
我意识到这似乎是一个基本问题,但我搜索了一个多小时。非常感谢您的帮助。
<asp:ImageButton ID="saveDesc" runat="server" AlternateText="Save Image Description" BorderStyle="None" ImageUrl="..\..\images\save.png" CommandArgument='this' CommandName="SaveDescription" />
<asp:TextBox ID="description" runat="server" Text='<%#Eval("description")%>' style="font-weight:bold; width:100%" TextMode="MultiLine" Height="50px"/>
在多个Accordion视图中实际存在多个DataLists,但我不确定这是否与答案相关。
由于
答案 0 :(得分:2)
你可以这样做......
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "SaveDescription")
{
DataListItem item = ((DataListItem)((ImageButton)e.CommandSource).NamingContainer);
TextBox description = (TextBox)item.FindControl("description");
description.Text // return your text
}
}