Изменить значение TextBox шаблона элемента в путанице Gridview

У меня есть gridview с командным полем Edit. В одном из полей шаблона сетки у меня есть текстовое поле внутри шаблона элемента редактирования. В событии RowUpdating я пытаюсь получить значение текстового поля.

TextBox text = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtfname");

GridViewRow row =GridView1.Rows[e.RowIndex] as  GridViewRow;

TextBox tFirstName = row.FindControl("txtfname") as TextBox;

TextBox textFName = (TextBox)row.Cells[0].Controls[3];

Я попробовал все три метода. Когда я поставил

if(!IsPostBack)Bind_grid();

Я получаю значение textbox.text как пустое. Если я удаляю это условие, я получаю значение, которое было привязано к элементу управления с помощью функции Bind на странице разметки. Я никогда не получал значение, которое редактирую в элементе управления.

Где я ошибаюсь? Решение?


person Rajiv Prathapan    schedule 08.07.2013    source источник
comment
Кто-нибудь, помогите мне как можно скорее :(   -  person Rajiv Prathapan    schedule 09.07.2013


Ответы (1)


Я предполагаю, что в вашей сетке включен пейджинг. Итак, вы получаете индекс строки, отображаемой в сетке (а не источника данных).

Например: вы находитесь на странице 2 вашей сетки, и у вас есть 10 элементов на странице. Вы нажимаете на редактирование в 3-й строке. e.RowIndex будет равен 2.

Если вы хотите сопоставить его с источником данных, это должно быть... ((page - 1) * items) + index;

((2-1) * 10) + 2 = 12

Таким образом, в вашем источнике данных вы должны получить элемент, который находится на позиции 12.

person mtzaldo    schedule 08.07.2013
comment
Я не хочу, чтобы он отображал его на источник данных. Я хочу значение текстового поля на текущей странице. Да, я включил пейджинг - person Rajiv Prathapan; 09.07.2013
comment
какова подпись события? тот, который использует GridViewEditEventArgs, GridViewRowEventArgs или GridViewUpdatedEventArgs? - person mtzaldo; 09.07.2013
comment
Я упомянул в вопросе, что это Rowupdating. В подписи есть GridViewUpdateEventArgs - person Rajiv Prathapan; 09.07.2013
comment
Единственное, что, я думаю, может произойти, это то, что вы каким-то образом не выполняете привязку во время события RowEditing и не сохраняете индекс редактирования. Это может помочь msdn.microsoft.com /ru-ru/библиотека/ ... - person mtzaldo; 09.07.2013
comment
Итак, оставьте if(!IsPostBack)Bind_grid(); и добавьте событие RowEditing. - person mtzaldo; 09.07.2013
comment
назначен ли OnRowEditing в сетке? Если да, то это все, что я могу сделать :( - person mtzaldo; 09.07.2013