2013-10-03 2 views
1

У меня есть GridView, который читается с SQLDataSource. Источник данных имеет параметр выбора, который тянет от CheckBox. Когда проверены устаревшие записи.DropDownList GridView Row неверное значение

<asp:ControlParameter Name="showHidden" 
    ControlID="showHiddenEntries" 
    DbType="Boolean" 
    DefaultValue="0" 
    PropertyName="Checked" /> 

Я играл с идеей, чтобы сэкономить место в GridView на узкой странице и заменили стандартные элементы управления с DropDownList. В DropDownLists onSelectedIndexChanged я поставил ...

DropDownList controlList = (DropDownList)sender; 
GridViewRow row = (GridViewRow)controlList.NamingContainer; 
int RowIndex = row.RowIndex; 
string rowValue = gV.DataKeys[RowIndex].Value.ToString(); 

Тогда у меня есть переключатель заявление для значений DropDownList.

Запуск моего запроса на выборке со скрытыми записями, показанными производит идентификаторы

650, 663, 675, 679, 648, 660, 680, 668, 657, 649 

Запись 650 и 675 являются «скрытыми». С showHiddenEntriesCheckBox проверено, что GridView отображает идентификаторы, перечисленные мной. Когда я выбираю что-то из DropDownList и проходное ключей данных ГВ, я вижу

663, 679, 648, 660, 680, 668, 657, 649, 645, 652 

RowIndex правильно, но rowValue неправильно. Я проверил с другим проектом, где я сделал что-то подобное, и он выглядит идентично мне и прекрасно работает. Может ли кто-нибудь указать мне в правильном направлении, чтобы исправить это?

Спасибо!

Toni W.

Edit: Я просто понял, что сформулированное, что немного плохо. RowIndex верен, но вся строка неправильная, а не только rowValue. Если у меня есть showHiddenEntries, то в моей строке GridView 0 есть 10, "Jane", "Doe", hidden, а строка 1 - 15, "Misc", "Person", shown, и я выбираю fromthe DropDownList в строке 0 RowIndex оценивает в 0, а данные 15, "Misc", "Person", shown.

ответ

1

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

+0

Спасибо, но я не думаю, что это так. Значения, в которых hidden = 1, просто не находятся в '' DataKeys 'gV', другие x-номера есть и в правильном порядке. – Marie

+0

@ToniW: Я немного смущен? Вы можете уточнить? –

+0

Я немного отредактировал оригинал, чтобы включить пример того, что происходит. ORDER BY основан на datetime, который не изменяется. Если у меня есть 100 строк и установите gridview, чтобы показать им все, они возвращаются в правильном порядке и отображаются в моем GridView со скрытыми значениями, в которых они принадлежат. Если я активирую строки DropDownList и получаю GridView, используя код в исходном столбце, а затем прокручиваю его DataKeys, он отображает 98 записей, за исключением тех, где hidden = 1 – Marie

Смежные вопросы