C# 如何在ASP.NET中将数据行从UI控件获取到ascx.cs?
我有一个绑定到DataGrid的DataTable。将在数据行中创建一个复选框。当我选中复选框时,代码隐藏被命中,但我不知道如何获取数据行C# 如何在ASP.NET中将数据行从UI控件获取到ascx.cs?,c#,asp.net,C#,Asp.net,我有一个绑定到DataGrid的DataTable。将在数据行中创建一个复选框。当我选中复选框时,代码隐藏被命中,但我不知道如何获取数据行 <asp:DataGrid ID="dgCaseStatusTypes" runat="server" AutoGenerateColumns="False" CellPadding="5"
<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?
}
受保护的void OnCheckedChanged_事件(对象发送方,System.EventArgs e)
{
复选框cb=发送方作为复选框;
//如何获取创建此控件的数据行?
}
您需要将数据网格的数据源保持在会话或视图状态。完成此操作后,您需要知道选中复选框时单击的行。然后可以获取绑定到该行的对象 我只需要点击内容的ID和复选框状态。以下几点对我有用
<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;
}
受保护的void OnCheckedChanged_事件(对象发送方,System.EventArgs e)
{
复选框cb=发送方作为复选框;
bool isChecked=cb.已检查;
DataGridItem dgi=cb.NamingContainer作为DataGridItem;
标签lbl=dgi.FindControl(“IDLabel”)作为标签;
字符串Id=lbl.Text作为字符串;
}
< /代码>如果您还处于开发早期,请考虑从<代码> DATAGRID 切换到<代码> GRIDVIEW。GridView
是在ASP.NET 2.0中构建的,用于替换DataGrid
。