Как получить строку по значению ключа или видимому индексу в ASPxGridView, а затем изменить значение столбца? - PullRequest
1 голос
/ 11 мая 2011

Привет
В ASPxGridView, есть ли способ получить строку с помощью VisibleIndex или KeyValue, чтобы я мог изменить любое значение столбца в нем? Я имею в виду что-то вроде этого:

var row = myGrid.SelectRowByKeyValue(myKeyValue);
OR:
var row = myGrid.SelectRowByVisibleIndex(myKeyValue);  

row["Column1"] = true; 

Edit:
То, что я пытаюсь сделать, это то, что каждый раз, когда я нажимаю кнопку, я хочу проверить одну конкретную строку (я использую ajax, чтобы не перезагружать всю страницу);

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Это можно сделать с помощью метода ASPxGridView.GetRow () . Обратите внимание, что изменение значения в DataRow недостаточно. Если вы хотите, чтобы эти изменения были сохранены, сохраните их в БД.

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

UPDATE

Ваш подход неверен. ASPxGridView не предоставляет метод для установки текста определенной ячейки (TD). Вместо этого вы должны заставить сетку вызывать событие CustomUnboundColumnData. Это можно сделать с помощью метода DataBind в ASPxGridView. В этом обработчике событий вы должны определить значение KeyField обработанной строки, сравнить его со значением keyField строки, в которой была нажата кнопка, и вернуть требуемое значение. Вот как бы я реализовал эту функцию ...

2 голосов
/ 12 мая 2011

Я решил это с помощью этого кода:

for (int i = 0; i < myGridView.VisibleRowCount; i++)
{
 if ( [My condition] )
   {
     (
       (CheckBox)myGridView
         .FindRowCellTemplateControl(i,
                                     myGridView.Columns["MyColumnName"] as GridViewDataColumn,
                                     "My_Unbound_Control_Name"
                                    )
     ).Checked = true;
   }
}  

Возможно, я не был правильным способом сделать это, но я не мог решить это по-другому.

...