Asp.net 查找GridView/Repeater中单击按钮的行
我正在绑定一个Asp.net 查找GridView/Repeater中单击按钮的行,asp.net,gridview,repeater,Asp.net,Gridview,Repeater,我正在绑定一个中继器。中继器中的每一行(是正确的单词吗?)都有一个按钮和一个隐藏字段。如何根据单击的按钮确定HiddenField的值 按钮的OnClick事件的代码隐藏: protected void btnButton1_Click(object sender, EventArgs e) { Button btnButton1 = (Button)sender; // how do i get this row's HiddenField Value? }
中继器
。中继器
中的每一行(是正确的单词吗?)都有一个按钮
和一个隐藏字段
。如何根据单击的按钮确定HiddenField
的值
按钮的OnClick
事件的代码隐藏:
protected void btnButton1_Click(object sender, EventArgs e)
{
Button btnButton1 = (Button)sender;
// how do i get this row's HiddenField Value?
}
编辑:Pleun的
命令参数
建议有效,但我仍然有问题。我需要在中继器
中找到按钮
所属的行(?),因为每行中还有一个文本框
,我需要它的值。因此,理想情况下,我希望获得该行并查找控件(“TextBox1”)等。对不起,我应该在我的初始问题中说明,我想做的是在按钮中添加一个CommandArgument。在这段代码中,它是一个imagebutton,但其思想是相同的。因此也不需要额外的隐藏字段
<asp:ImageButton ID="btnMail" ImageUrl="~/imgnew/prof/sendlink.png"
CommandArgument='<%# Eval("id")%>'
更新:
如果需要所有数据,则需要一个不同的事件。中继器中的数据可作为中的项目使用
RepeaterCommandEventArgs
在命令事件中(RepeaterCommandEventArgs)
有关处理命令事件的信息,请参见此示例
或
我喜欢做的是在按钮中添加CommandArgument。在这段代码中,它是一个imagebutton,但其思想是相同的。因此也不需要额外的隐藏字段
<asp:ImageButton ID="btnMail" ImageUrl="~/imgnew/prof/sendlink.png"
CommandArgument='<%# Eval("id")%>'
更新:
如果需要所有数据,则需要一个不同的事件。中继器中的数据可作为中的项目使用
RepeaterCommandEventArgs
在命令事件中(RepeaterCommandEventArgs)
有关处理命令事件的信息,请参见此示例
或
如果您使用
中继器
,您可以识别列表中每一行中的元素
如果使用gridview
使用
希望这对您有所帮助如果您使用
中继器
,您可以识别列表中每一行中的元素
如果使用gridview
使用
希望这有帮助您可以通过获取按钮的父项,然后在该控件上执行
FindControl()
向上遍历
Row parentRow = (Row)((Button)sender).Parent;
var tBox = (System.Web.UI.WebControls.TextBox)parentRow.FindControl("myTextBox")
您可能需要反复查看按钮的嵌套深度以及使用何种控件类型才能到达相应的父控件。您可以通过获取按钮的父控件,然后在该控件上执行
FindControl()
向上遍历
Row parentRow = (Row)((Button)sender).Parent;
var tBox = (System.Web.UI.WebControls.TextBox)parentRow.FindControl("myTextBox")
您可能需要仔细查看按钮的嵌套深度以及访问相应父级的控件类型。我的标记代码:
<asp:Repeater ID="RptFiles" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>--</td>
<td><%#Eval("title")%></td>
<td>
<asp:FileUpload ID="fuVersion" runat="server" />
<asp:Button ID="btnUploadVersion" Text="Last opp" runat="server" OnClick="btnUploadVersion_Click" CommandArgument='<%#Eval("Id") %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
我的标记代码:
<asp:Repeater ID="RptFiles" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>--</td>
<td><%#Eval("title")%></td>
<td>
<asp:FileUpload ID="fuVersion" runat="server" />
<asp:Button ID="btnUploadVersion" Text="Last opp" runat="server" OnClick="btnUploadVersion_Click" CommandArgument='<%#Eval("Id") %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
这不回答OP的问题这不回答OP的问题不客气,因为你是新来的,如果它解决了你的问题,请标记为aswer。如果我需要检索多个值怎么办?我可以每行有许多HiddenFields,但每个控件只有一个CommandArgument。在这种情况下,不处理ButtonClick,而是处理OnCommand事件。在RepeaterCommandEventArgs中,有您需要的数据项。我在回复更新中发布的链接中有更多信息欢迎您,因为您是新来的,如果它解决了您的问题,请将其标记为aswer。如果我需要检索多个值怎么办?我可以每行有许多HiddenFields,但每个控件只有一个CommandArgument。在这种情况下,不处理ButtonClick,而是处理OnCommand事件。在RepeaterCommandEventArgs中,有您需要的数据项。更多信息在我发布的更新答案的链接中这与你的问题无关。但是如果你得到了问题的答案,试着接受它们。每个答案的左边都有一个复选框:)请看我的更新答案-处理CommandEvent而不是这与您的问题无关。但是如果你得到了问题的答案,试着接受它们。每个答案的左边都有一个复选标记:)查看我的更新答案-改为处理CommandEvent