У нас есть веб-форма с сеткой и кнопкой. Radgrid имеет два столбца и столбец флажка.
На странице Page_load будут отображаться данные, и пользователь сможет выбрать (с помощью флажка), какие строки будут проходить при обновлении EmpId; если строка выбрана, NewEmpId заменит OldEmpId. Нажимается кнопка «Обновить», и изменения вносятся.
Проблема, с которой я столкнулся, заключается в том, что я предпочитаю использовать имена данных для извлечения данных из каждой строки. Но у меня возникли проблемы с его реализацией без использования 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);
}
}
}