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

时间:2014-05-27 06:24:03

标签: asp.net

我在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。

提前致谢。

2 个答案:

答案 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方法查找子控件并将其转换为适当的控件类型以访问其属性。