RadGrid — несколько элементов управления в одном столбце в шаблоне редактирования в пакетном редактировании

#asp.net #telerik #radgrid

#asp.net #telerik #radgrid

Вопрос:

Я использую пакетное редактирование в radgrid с кнопкой сохранения вне сетки. В боковой сетке есть столбцы шаблонов, и их шаблоны редактирования имеют несколько значений. Я могу присваивать им значения. Но когда я нажимаю сохранить в методе команды редактирования боковой ванны, соответствующий ключ newvalues выдает значение [object object]

  <telerik:GridTemplateColumn HeaderText="Dwg Sch" ColumnGroupName="WACompOrderEntry" UniqueName="DwgSchedule" HeaderTooltip="This is the date the factory has promised to provide approval drawings to the field (loaded automatically from Vista when available)">
                        <ItemTemplate>
                            <asp:Label runat="server" ID="lblRdDwgSch" Text='<%# Eval("Vista_Sub", "{0:M/d/yy}") %>' ToolTip="This is the date the factory has promised to provide approval drawings to the field (loaded automatically from Vista when available)"></asp:Label>
                            <br />
                            <asp:Label ID="lblDwgSch" runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadDatePicker ID="rdDwgSch" runat="server" Width="80px" DbSelectedDate='<%# Eval("Vista_Sub", "{0:M/d/yy}") %>' ToolTip="This is the date the factory has promised to provide approval drawings to the field (loaded automatically from Vista when available)"></telerik:RadDatePicker>
                            <asp:TextBox ID="txtDwgSch" runat="server" Width="80px" />
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
  

Выше приведено определение столбца шаблона

    protected void gridMilestoneMatrixEntry_BatchEditCommand(object sender, GridBatchEditingEventArgs e)
        {
            if (e.Commands == null)
            {
                return;
            }
            Cache.Remove("MileStoneData");
            var updatedCommands = e.Commands.Where(x => x.Type == GridBatchEditingCommandType.Update);
            var deletedCommands = e.Commands.Where(x => x.Type == GridBatchEditingCommandType.Delete);
            List<int> updatedRecords = new List<int>();
            List<long> deletedRecords = new List<long>();
            if (updatedCommands != null amp;amp; updatedCommands.Count() > 0)
            {
                updatedRecords = UpdateMilestoneMatrix(updatedCommands.ToList());
            }
  

Теперь внутри значений ключа хэш-таблицы не задаются значения для объекта
updatedValues[«DwgSchedule»], он выдает значение как [объект object]

  if (updatedValues["DwgSchedule"] != null)
                {
                    tempStr = updatedValues["DwgSchedule"].ToString();
                    if (!string.IsNullOrEmpty(tempStr))
                    {
                        confDwgExp = DateTime.ParseExact(updatedValues["DwgSchedule"].ToString(), "M/d/yyyy", CultureInfo.InvariantCulture);
                    }
                    tempStr = string.Empty;
                }
  

Комментарии:

1. Пробовали ли вы проверять значение / атрибуты объекта в «Немедленном окне» Visual Studio во время отладки?

2. да, я пробовал, его [объект, объект]

3. Независимо от того, что происходит, я думаю, было бы разумно использовать другую стратегию при реализации вашего пакетного редактирования; когда вы нажимаете сохранить, почему бы просто не перебирать строки и извлекать данные каждой ячейки и отправлять эти данные в любой источник, который вы используете?

Ответ №1:

То, как я решил сделать это, заключалось в том, чтобы выполнить итерацию по строкам сетки с помощью RadGrid.Items This позволяет вам получить доступ к каждой отдельной строке, что, по сути, дает вам доступ к отдельным элементам управления строки (т.Е. Не Только к ячейкам, но и ко всему в строке).

 Private Sub RbtnSaveAll_Click(sender As Object, e As EventArgs) Handles RbtnSaveAll.Click

    For Each item As GridDataItem In grdActivities.Items 'Iterates over the rows
    'Get your controls by using item.findcontrol("controlname").
    'Then send the data of the changed controls to the datasource
    Next

    bindGrid(True) 'Do your bind event if necessary
End Sub
  

Если вам нужна версия c #, вы можете просто преобразовать ее с помощью конвертера telerik

Редактировать:

 <asp:Button ID="btnBulkBookOn" runat="server" Text="Book On" CommandName="Update"/>
  

VB-код:

         Private Sub radgrdResources_UpdateCommand(sender As Object, e As GridCommandEventArgs) Handles radgrdResources.UpdateCommand
' This will be invoked when you clikc the button and fire off the Radgrid's native save.
    End Sub
  

Комментарии:

1. Я могу найти элементы управления, они являются метками, поскольку пакетное редактирование уже закрыто, но их текст пуст.

2. Не могли бы вы добавить правку в свой код? Тогда я мог бы дать более подробную справку

3. Во-первых, может показаться, что в опубликованном вами коде нет элемента с идентификатором =»DwgSchedule». Во-вторых, если у вас есть кнопка внутри сетки (commandtemplate или что-то еще?) вы можете просто указать имя команды как «Обновить», и собственная команда обновления Radgrid будет запущена и обновит все соответствующим образом.

4. Я обновил код, ключ для DwgSch показывает [object object] . Кроме того, я не использую кнопку сохранения сетки, вызывая пакетное редактирование сохранения из javascript одним нажатием кнопки. Но я также пробовал использовать кнопку сохранения, и это также не имело никакого значения.