【问题标题】:Use DataKeyNames and CheckBox in GridTemplateColumn to see what rows have been selected?使用 GridTemplateColumn 中的 DataKeyNames 和 CheckBox 来查看选择了哪些行?
【发布时间】:2015-12-02 21:18:40
【问题描述】:

我们有一个带有 radgrid 和一个按钮的网络表单。 radgrid 有两列和一个复选框列。

在 Page_load 上,将显示数据,用户将能够(通过复选框)选择哪些行将通过 EmpId 的更新;如果该行被选中,NewEmpId 将替换 OldEmpId。单击更新按钮并进行更改。

我遇到的问题是我更喜欢使用 datakeynames 从每一行检索数据。但是我在不使用 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>

以下代码只是我更喜欢用于此问题的代码。它使用数据键名。但它没有构建:

protected void RadButtonUpdateSectors_Click(object sender, EventArgs e)
{
    foreach (GridItem item in RadGridEmp.MasterTableView.Items)
    {
        GridDataItem dataitem = (GridDataItem)item;
        TableCell cell = dataitem["GridCheckBoxColumn"];
        CheckBox checkBox = (CheckBox)cell.Controls[0];
        if (checkBox.Checked)
        {
            oldEmpId = dataitem.GetDataKeyValue("OldEmpId").ToString();
            newEmpId = dataitem.GetDataKeyValue("NewEmpId").ToString();
            UpdateEmpId(oldEmpId, newEmpId, connString);
        }
    }
}

【问题讨论】:

    标签: c# asp.net telerik telerik-grid radgrid


    【解决方案1】:

    请尝试以下代码 sn-p。

    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);
            }
        }
    }
    

    如果有任何问题,请告诉我。

    注意:- 从数据键名中删除多余的空间。

    【讨论】:

    • 效果很好。谢谢。
    猜你喜欢
    • 2013-08-08
    • 2015-09-28
    • 2018-12-11
    • 2013-09-03
    • 2019-12-05
    • 2013-08-31
    • 2013-06-07
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多