Asp.net 从DataGrid中的选定复选框获取索引

Asp.net 从DataGrid中的选定复选框获取索引,asp.net,Asp.net,我正在Asp.net中使用DataGrid <asp:DataGrid> <Columns> <asp:TemplateColumn> <ItemTemplate> <asp:CheckBox ID="chkDetail" runat="server" OnCheckedChanged="chkDetail_CheckedChanged" />

我正在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没有GridView那样的“行”,所以我不知道如何从同一行中获取名称

提前谢谢

DataGridViewRow dgvrows = TrGrid.SelectedRows;
string c = dgvrows.Cells("Late_Time").value.toString();

你可以试试这个代码

protected void chkDetail_CheckedChanged(object sender, EventArgs e)
{
     Context["Name"] = (((sender as CheckBox).NamingContainer as DataGridItem).FindControl("label_id") as Label).Text;
}
您的
发送者
将成为一个
复选框
,因为事件是由它触发的


每个控件都有一个名为
NamingContainer
的属性,该属性提供了继承
INamingContainer
接口的最近的服务器控件。在您的例子中,它是
DataGridItem
。您可以使用
FindControl
方法查找子控件,并将其强制转换为适当的控件类型以访问其属性。

u谈论gridview或datagrid?我的框架是4.5。它不支持GridView控件
DataGridViewRow dgvrow = this.dataGridView1.Rows[index];
DataRowView drvrow = (DataRowView)dgvrow.DataBoundItem;
protected void chkDetail_CheckedChanged(object sender, EventArgs e)
{
     Context["Name"] = (((sender as CheckBox).NamingContainer as DataGridItem).FindControl("label_id") as Label).Text;
}