Удаление ссылок «Изменить», «Обновить» и «Отменить» из RadGrid

Я пытаюсь удалить ссылки, которые отображаются в Telerik RadGrid по умолчанию. Вот как выглядит сетка до того, как я попытаюсь удалить ссылку на редактирование:

прежде чем я попытаюсь удалить ссылку редактирования

Я нашел этот фрагмент кода, он используется для удаления ссылки редактирования:

if (!IsPostBack)
            {
                foreach (GridItem item in RGV_POI.MasterTableView.Items)
                {
                    if (item is GridEditableItem)
                    {
                        GridEditableItem editableItem = item as GridDataItem;
                        editableItem.Edit = true;


                    }
                }
                RGV_POI.Rebind();
            }

Вот так выглядит сетка после кода:

как выглядит сетка после того, как я попробую код

Ссылка редактирования по-прежнему отображается на первом элементе. Есть ли способ удалить ссылку редактирования, обновления и отмены для каждого элемента в RadGrid? Я хочу иметь возможность удалять/отключать ссылки, используя событие нажатия кнопки. Затем вы сможете добавить/включить ссылки обратно, используя событие нажатия кнопки.


person nate    schedule 29.09.2014    source источник
comment
Похоже, ваш текущий код просто делает строки редактируемыми, а не удаляет ссылку редактирования. Вот почему появляется обновление/отмена. Это намерение?   -  person LogicaLInsanity    schedule 29.09.2014
comment
@LogicaLInsanity Нет, я хотел сделать их нередактируемыми, но теперь я понимаю, что вы говорите. Даже если я установлю значение false, кнопка редактирования все равно появится.   -  person nate    schedule 29.09.2014


Ответы (3)


Я не знаю о Telerik RadGrid Control, но наверняка этот элемент управления должен наследовать asp:GridView. Вы можете сделать ссылки невидимыми в событии RowDataBound. Вот как вы можете это сделать.

Добавьте OnItemDataBound="Grid_ItemDataBound" в виде сетки.

В коде позади:

    protected void Grid_ItemDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Item.DataItem == null)
            return;

        //cell of all the link button edit/update etc.
        TableCell cell = e.Item.Cells[//index of the column];

        foreach(Control c in cell.Controls)
        {
            c.Visible = false;
        }  
    }

Вы должны как-то проверить идентификатор кнопок отмены, редактирования, обновления. Вероятно, вам следует предоставить больше информации об элементах управления в файле aspx.

ИЗМЕНИТЬ:

Используйте событие OnItemDataBound, существующее в их документации: http://www.telerik.com/help/aspnet-ajax/events_t_telerik_web_ui_radgrid.html

person mybirthname    schedule 29.09.2014
comment
Для RadGrids нет события RowDataBound. - person nate; 29.09.2014
comment
@nate попробуйте в этом случае с ItemDataBound! - person mybirthname; 29.09.2014
comment
@nate Я вношу изменения в код, проверьте его, вы должны увидеть, только какой индекс имеет контроль. - person mybirthname; 29.09.2014
comment
Теперь я получаю сообщение об ошибке Не удается разрешить символ «ячейка» - person nate; 29.09.2014
comment
@nate man Я сделал опечатку ... это должна быть ячейка TableCell = e.Item.Cells[//индекс столбца];, а не ячейка TableCell - e.Item.Cells[//индекс столбца];. Изменить - с =. - person mybirthname; 29.09.2014
comment
Не могу поверить, что я этого не уловил. Запуск кода сейчас - person nate; 29.09.2014
comment
Давайте продолжим обсуждение в чате. - person nate; 29.09.2014

Кнопка редактирования ссылки в RadGrid на самом деле является столбцом, а именно столбцом GridEditCommandColumn. Чтобы показать/скрыть это в случае нажатия кнопки, вам придется программно перестроить все столбцы в обработчике событий щелчка, включая или исключая GridEditCommandColumn по мере необходимости. Вы не можете добавить или удалить один столбец программно, когда остальная часть сетки создается декларативно. Было бы полезно, если бы мы могли больше узнать о том, как сетка объявляется и строится в вашем приложении.

Программное создание RadGrid

Однако возможно изменить свойство GridEditCommandColumn.Display. Если вы можете получить дескриптор самого столбца, а не отдельных ячеек, вы можете настроить это по мере необходимости в событиях нажатия кнопки.

person Bryan Ulfers    schedule 03.10.2014
comment
Хорошо, как бы я это сделал. - person nate; 07.10.2014
comment
В первом примере здесь показано, как определить столбцы программно. и привязать к ним данные. Они делают это в событии page_Load. Вместо этого вам нужно будет сделать это в событиях нажатия кнопки. - person Bryan Ulfers; 08.10.2014

Вы должны удалить GridEditCommandColumn, если вы не хотите, чтобы ваши элементы редактировались. Другой вариант — изменить видимость на сервере с помощью свойства Visible/Display. Вы можете использовать метод сетки GetColumnSafe(columnName) для получения необходимой ссылки: http://www.telerik.com/help/aspnet-ajax/grid-using-getitems-getcolumn-methods.html

Чтобы избавиться от кнопок обновления/отмены, вы можете использовать собственный шаблон, хотя я не понимаю, зачем вам это нужно, если ваша сетка недоступна для редактирования: http://demos.telerik.com/aspnet-ajax/grid/examples/data-editing/form-template-update/defaultcs.aspx

person rdmptn    schedule 07.10.2014
comment
Я хочу удалить ссылку редактирования при загрузке веб-формы, а затем включить ее, если пользователю нужно изменить данные. - person nate; 07.10.2014
comment
Как узнать, что пользователю нужно изменить данные? На сервере или на клиенте? Мы показали, как удалить/добавить эти кнопки ссылок на сервере. Вот как скрыть столбец с помощью JavaScript: демонстрации. telerik.com/aspnet-ajax/grid/examples/client/ - person rdmptn; 08.10.2014