【发布时间】:2017-01-02 09:52:04
【问题描述】:
Context 是一个老式的 ASP 2.0 应用程序。
我有一个可以在全球范围内正常工作的 gridView:
<asp:GridView ID="GV" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="DS" AllowPaging="true">
...
<asp:TemplateField HeaderText="MyFieldName" >
<ItemTemplate>
<asp:CheckBox ID="CB_ID" runat="server" OnCheckedChanged="CB_CheckedChanged" AutoPostBack="true" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="CB_ID" runat="server" OnCheckedChanged="CB_CheckedChanged" AutoPostBack="true" />
</EditItemTemplate>
</asp:TemplateField>
...
</GridView>
protected void CB_radio_obligatoire_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = sender as CheckBox;
}
所以 GridView 的所有行都代表 DB 项。 我的 CB_radio_obligatoire_CheckedChanged 方法需要调用一个 storedProcedure 并且需要数据库记录 ID。
如何在此 Gridview 中设置和访问此记录 ID?
我想最简单的方法是设置一个绑定到 ID 的隐藏字段。 如果是这样,这个隐藏域应该在哪里?作为 GridView 的隐藏列?在 asp:TemplateField 里面?在 ItemTemplate 里面?
【问题讨论】: