Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用GridTemplateColumn中的DataKeyNames和CheckBox查看选择了哪些行?_C#_Asp.net_Telerik_Telerik Grid_Radgrid - Fatal编程技术网

C# 使用GridTemplateColumn中的DataKeyNames和CheckBox查看选择了哪些行?

C# 使用GridTemplateColumn中的DataKeyNames和CheckBox查看选择了哪些行?,c#,asp.net,telerik,telerik-grid,radgrid,C#,Asp.net,Telerik,Telerik Grid,Radgrid,我们有一个带有radgrid和按钮的webform。radgrid有两列和一个复选框列 在加载页面上,将显示数据,并且用户将能够通过复选框选择更新EmpId时将通过哪些行;如果选中该行,NewEmpId将替换OldEmpId。单击更新按钮并进行更改 我遇到的问题是,我更喜欢使用DataKeyName从每一行检索数据。但是如果不使用GridCheckBoxColumn,我就很难实现它,我不想使用GridCheckBoxColumn,因为radgrid需要处于编辑模式才能选中复选框,这会带来其他问题

我们有一个带有radgrid和按钮的webform。radgrid有两列和一个复选框列

在加载页面上,将显示数据,并且用户将能够通过复选框选择更新EmpId时将通过哪些行;如果选中该行,NewEmpId将替换OldEmpId。单击更新按钮并进行更改

我遇到的问题是,我更喜欢使用DataKeyName从每一行检索数据。但是如果不使用GridCheckBoxColumn,我就很难实现它,我不想使用GridCheckBoxColumn,因为radgrid需要处于编辑模式才能选中复选框,这会带来其他问题

<telerik:RadGrid ID="RadGridEmp" runat="server" AutoGenerateColumns="False" Width="100%" AllowPaging="True" PageSize="22">
    <ClientSettings>
      <Selecting AllowRowSelect="True" />
    </ClientSettings>
    <mastertableview commanditemdisplay="TopAndBottom" datakeynames="OldEmpId, NewEmpId, EmpName">
        <commanditemsettings showaddnewrecordbutton="false" />
            <Columns>
                <telerik:GridBoundColumn DataField="OldEmpId" HeaderText="OldEmpId">
                    <HeaderStyle Width="110px"></HeaderStyle>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="NewEmpId" HeaderText="NewEmpId">
                    <HeaderStyle Width="110px"></HeaderStyle>
                </telerik:GridBoundColumn>
                <ItemTemplate>
                    <asp:CheckBox ID="ChkChange" runat="server" />
                </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
    </mastertableview>
</telerik:RadGrid>

请尝试使用下面的代码段

datakeynames="OldEmpId,NewEmpId,EmpName"
...............
...............
protected void RadButtonUpdateSectors_Click(object sender, EventArgs e)
{
    foreach (GridDataItem item in RadGridEmp.MasterTableView.Items)
    {
        CheckBox ChkChange = item.FindControl("ChkChange") as CheckBox;
        if (ChkChange.Checked)
        {
            string oldEmpId = item.GetDataKeyValue("OldEmpId").ToString();
            string newEmpId = item.GetDataKeyValue("NewEmpId").ToString();
            UpdateEmpId(oldEmpId, newEmpId, connString);
        }
    }
}
如果有任何问题,请告诉我


注意:-删除DataKeyName中的额外空间。

效果很好。谢谢
datakeynames="OldEmpId,NewEmpId,EmpName"
...............
...............
protected void RadButtonUpdateSectors_Click(object sender, EventArgs e)
{
    foreach (GridDataItem item in RadGridEmp.MasterTableView.Items)
    {
        CheckBox ChkChange = item.FindControl("ChkChange") as CheckBox;
        if (ChkChange.Checked)
        {
            string oldEmpId = item.GetDataKeyValue("OldEmpId").ToString();
            string newEmpId = item.GetDataKeyValue("NewEmpId").ToString();
            UpdateEmpId(oldEmpId, newEmpId, connString);
        }
    }
}