2015-02-05 2 views
0

Я пытаюсь получить элемент редактирования из списка в обработчике событий ItemEditing. Когда я пытаюсь получить контроль, используя этот код:Объект не установлен на экземпляр объекта Ошибка: ListView EditItem

TextBox JobDesTextBox = (TextBox)(LV_Tickets.EditItem.FindControl("JobDescTextBox")); 

Я получаю ошибку Object is not set to an instance of an object. Я знаю, что JobDescTextBox существует в шаблоне EditItem, потому что я использую его в событии ItemCanceling. Я думаю, что, возможно, это ошибка, потому что элемент управления не существует на данный момент времени на веб-сайте, но я не уверен, как обойти это. Это фрагмент из EditItemTemplate в ListView:

<asp:TextBox ID="JobDescTextBox" runat="server" Text='<%# Eval("JobDesc") %>' /> 

Любые предложения будут с благодарностью.

+1

Взгляните на его ссылку - http://stackoverflow.com/questions/6152630/findcontrol-listview-edit-nullreferenceexception – MethodMan

+0

Хорошо, я попробовал, что предложил этот парень, но когда я пытаюсь установить текст текстового поля, он делает не работа. Ошибок нет, но он не установлен. –

+0

Можете ли вы показать код, который вы используете, чтобы изобразить то, что вы только что сказали ... так что мы можем видеть ..? – MethodMan

ответ

1

После сообщения @ MethodMan я смог исправить свою проблему. Я установил индекс редактирования в правильный и повторно связал представление списка.

LV_Tickets.EditIndex = e.NewEditIndex; 
LV_Tickets.DataBind(); 

Для того, чтобы установить значение текстового поля, а не получить значение, которое хранится в базе данных мне пришлось отменить редактирования события с помощью e.Cancel = true;

окончательный код выглядел так:

LV_Tickets.EditIndex = e.NewEditIndex; 
LV_Tickets.DataBind(); 
e.Cancel = true; 
TextBox JobDesTextBox = (TextBox)(LV_Tickets.EditItem.FindControl("JobDescTextBox")); 
JobDesTextBox.Text = "Setting the textbox";  
Смежные вопросы