如何在ASP.NET中将DataRow从UI控件获取到ascx.cs
本文关键字:控件 UI 获取 cs ascx DataRow ASP NET 中将 | 更新日期: 2023-09-27 18:20:42
我有一个绑定到DataGrid的DataTable。在数据行中创建一个复选框。当我选中复选框时,后面的代码会被选中,但我不知道如何访问DataRow。
<asp:DataGrid ID="dgCaseStatusTypes"
runat="server"
AutoGenerateColumns="False"
CellPadding="5"
DataKeyField="InmateCaseStatusID"
OnItemCommand="dgCaseStatusTypes_ItemCommand">
<Columns>
<asp:BoundColumn DataField="Code" HeaderText="Code"></asp:BoundColumn>
<asp:BoundColumn DataField="Text" HeaderText="Text"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Prebook Visible" >
<ItemTemplate>
<asp:CheckBox id="chkBox1"
runat="server"
AutoPostBack="true"
checked= '<%# Eval("IsPreBookVisibleBool") %>'
OnCheckedChanged="OnCheckedChanged_Event"
></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
protected void OnCheckedChanged_Event(object sender, System.EventArgs e)
{
CheckBox cb = sender as CheckBox;
//how to get the DataRow that created this control?
}
我真的只需要点击内容的ID和CheckBox状态。以下内容对我有效。
<asp:DataGrid ID="dgCaseStatusTypes"
runat="server"
AutoGenerateColumns="False"
CellPadding="5"
DataKeyField="InmateCaseStatusID"
OnItemCommand="dgCaseStatusTypes_ItemCommand">
<Columns>
<asp:TemplateColumn HeaderText="ID Label" Visible="false">
<ItemTemplate>
<asp:Label id="IDLabel"
runat="server"
AutoPostBack="true"
Text='<%# Eval("InmateCaseStatusID") %>'
></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Code" HeaderText="Code"></asp:BoundColumn>
<asp:BoundColumn DataField="Text" HeaderText="Text"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Prebook Visible" >
<ItemTemplate>
<asp:CheckBox id="chkBox1"
runat="server"
AutoPostBack="true"
checked= '<%# Eval("IsPreBookVisibleBool") %>'
OnCheckedChanged="OnCheckedChanged_Event"
></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
protected void OnCheckedChanged_Event(object sender, System.EventArgs e)
{
CheckBox cb = sender as CheckBox;
bool isChecked = cb.Checked;
DataGridItem dgi = cb.NamingContainer as DataGridItem;
Label lbl = dgi.FindControl("IDLabel") as Label;
string Id = lbl.Text as string;
}
您需要将数据网格的数据源保持在会话或视图状态。完成此操作后,您需要知道选中复选框时单击的行。然后,您可以获取绑定到该行的对象。