Как да извличате данни от gridview в ItemTemplate в ASP.NET 2

Имам мрежов изглед, където всяка колона има две полета за шаблон. Единият е ItemTemplate, а другият е EditItemTemplate. Сега в EditItemTemplate ще покаже някои текстови полета, където мога да извърша необходимото редактиране. Мога лесно да извлека данни от всяка клетка, като използвам следния код-

Dim gvRow As GridViewRow = gvView.Rows(e.RowIndex)

CType(gvRow.FindControl("controlID"), TextBox).Text

Но как мога да извлека данни, когато мрежовият изглед не е в режим на редактиране, който е в ItemTemplate. Опитах следното-

Dim rowView As DataRowView = CType(gvRow.DataItem, DataRowView)

Dim something As String = rowView("data_field").ToString()

Но получаването на препратката към обект на изключение не е зададено на екземпляр на обект. Това вероятно се случва, защото горният код трябва да се използва в метод като RowDataBound, когато се инстанцира ред. Но трябва да извлека данни от друг метод. Някаква идея как да направя това.

Отново за пояснение, искам да извличам данни, когато колоните за изглед на мрежата са в режим ItemTemplate.


person Alim Ul Gias    schedule 01.11.2011    source източник


Отговори (3)


Предполагам, че искате да прочетете стойността на колоната за мрежов изглед в някаква команда. Ако имате gvRow, който е редът на вашия gridview, тогава можете да използвате .Cell(index).Text, за да получите стойност на колоната.

Ако използвате шаблонно поле и използвате някои контроли за показване на данни от колони, трябва да направите gvRow.findControl("controlId") и след това да го прехвърлите към подходящ контролен обект, за да прочетете данни от него.

Честито кодиране

person Prashant Lakhlani    schedule 01.11.2011
comment
Не, пробвал съм това. Каквото и да правя .Cell(index).Text връща . Това е празен низ. - person Alim Ul Gias; 01.11.2011
comment
кое събитие използвате? моля, публикувайте кода на aspx и vb/cs тук, за да можем да помогнем много - person Prashant Lakhlani; 01.11.2011
comment
Използвам събитието onClick. Целият код не може да бъде даден. Просто погледнете следващия ред. Какво правя грешно?? Дим тест As String= Me.gvView.Rows(index).Cells(index).Text въпреки че има стойност, но в крайна сметка имам тест, зададен на - person Alim Ul Gias; 01.11.2011
comment
Добре, има смисъл, използвате ли някаква контрола за показване на данни от колони? в този случай трябва да направите Me.gvView.Rows(index).FindControl(ControlId), за да получите контролата и след това да вземете стойност от нея - person Prashant Lakhlani; 01.11.2011
comment
добре, аз използвам контрола в editItemTemplate, но в itemTemplate използвам DataBinder. И така, как мога да взема данни, когато не съм в режим на редактиране - person Alim Ul Gias; 01.11.2011
comment
Предполагам, че трябва да добавите ‹asp:hiddenField във вашата колона и да го намерите по id, това е най-лесният начин да го постигнете - person Prashant Lakhlani; 01.11.2011

Може да помислите за директен достъп до източника на данни за gridview. Бъдете внимателни, когато правите това, ако разрешите сортиране/страниране в мрежата, тъй като индексът във вашия източник на данни ще се различава.

person Paul    schedule 01.11.2011

Два отговора работиха добре, благодаря ви много.

Прекарах повече време, опитвайки се да получа стойността на GridView Cell, но безполезно, не можах да разбера какъв е проблемът. Когато прочетох отговора ви, открих, че моят GridView има шаблонни полета, така че това беше проблемът.

person Mohamed Khalil    schedule 05.01.2012
comment
Това не е отговор! това трябва да е в коментара (ако е необходимо) - person Zerotoinfinity; 19.01.2015