我在Asp.net中使用DataGrid
<asp:DataGrid>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox ID="chkDetail" runat="server" OnCheckedChanged="chkDetail_CheckedChanged" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Name" HeaderStyle-Font-Bold="true" HeaderStyle-HorizontalAlign="Center">
<EditItemTemplate>
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Name") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
如您所见,DataGrid中有一个Checkbox。
每次我在办理复选框时,我都要开2个活动 1.其他复选框将被取消选中(我可以用JS做 - 所以它没关系) 2. Context将像这样存储DataGrid Name字段
protected void chkDetail_CheckedChanged(object sender, EventArgs e)
{
Context["Name"] = ??;
}
因为DataGrid没有&#34;行&#34;像GridView一样,我不知道如何从同一行获取Name。
提前致谢。
答案 0 :(得分:0)
DataGridViewRow dgvrows = TrGrid.SelectedRows;
string c = dgvrows.Cells("Late_Time").value.toString();
OR
DataGridViewRow dgvrow = this.dataGridView1.Rows[index];
DataRowView drvrow = (DataRowView)dgvrow.DataBoundItem;
答案 1 :(得分:0)
您可以尝试此代码
protected void chkDetail_CheckedChanged(object sender, EventArgs e)
{
Context["Name"] = (((sender as CheckBox).NamingContainer as DataGridItem).FindControl("label_id") as Label).Text;
}
由于事件被触发,您的sender
将为CheckBox
。
每个控件都有一个名为NamingContainer
的属性,它提供了最接近INamingContainer
接口的服务器控件。在您的情况下,它是DataGridItem
。您可以使用FindControl
方法查找子控件并将其转换为适当的控件类型以访问其属性。