Отключить GridView AlternateRows - PullRequest
0 голосов
/ 02 мая 2011

В настоящее время я получил GridView, содержащий несколько текстовых значений, из которых несколько превращаются в DropDownLists после нажатия кнопки «Изменить».Это требует от меня доступа к текущему текстовому значению ячейки и установки SelectedIndex DropDown соответствующим образом после нажатия кнопки «Изменить».Это работает для ... ну, половина строк, так как только у тех есть RowStyle "Edit", у других есть "Alternate | Edit", что является неприятностью, так как я действительно не требую эту функцию.

Вот мой код:

protected void gridVariables_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //this only works at RowIndex 0, 2, 4 etc.
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        switch (((DataRowView)e.Row.DataItem).Row.ItemArray[2].ToString())
        {
            case "True":
                ((CheckBox)e.Row.Cells[0].Controls[1]).Checked = true;
                break;
            case "False":
                ((CheckBox)e.Row.Cells[0].Controls[1]).Checked = false;
                break;
            default:
                break;
        }
        ((DropDownList)e.Row.Cells[3].Controls[1]).Items.FindByValue(((DataRowView)e.Row.DataItem).Row.ItemArray[3].ToString()).Selected = true;
    }
}

GridView состоит из TemplateFields с метками в ItemTemplate и CheckBox (index 0) или DropDownList (index 3) в качестве EditItemTemplate, остальные"нормальные" BoundFields.По какой-то причине я чувствую, что не могу опубликовать разметку asp без полного уничтожения форматирования этого сообщения.

Итак, есть ли способ улучшить мою структуру программирования, чтобы она работала как с «Edit», так и с «Edit»Изменить | Альтернативные "строки или отключить функцию чередующихся строк?

Спасибо,

Деннис

1 Ответ

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

DataControlRowState - это перечисление на основе флагов, поэтому правильным способом записи условия будет

if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)

Примечание побитовый оператор * - он будет работать как для обычногоа также чередующиеся строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...