[ oggie @ 01.12.2006. 10:52 ] @
Imam na formi gridview koji je bound-ovan na datatable. Sastoji se od dve kolone ID i NAZIV.
Dodao sam Edit dugme i kad ga kliknem pojavi se textbox za izmenu NAZIVA posto je ID read only. Izmenim NAZIV i onda hocu da napisem kod za OnRowEditingEvent:

datatable.Rows(0).Item("NAZIV") = gridview.Rows(e.RowIndex).Cells(1).Text

Medjutim ovaj kod ne radi.

Moje pitanje je kako da prozovem taj editovani textbox sa novim NAZIVOM i kako da mu "uhvatim" novu vrednost.
Sve sto sam nasao u MSDN se bazira na ovom sto sam napisao ali kod mene vraca prazan string.

Bio bih jako zahvalan za pomoc, u pitanju je samo jedna jedina prozivka polja, a ja ne mogu da nadjem kako se to radi.
[ sivan347 @ 01.12.2006. 11:24 ] @
Po meni bi prvo trebao kolonu Naziv trebao da prebacis da bude Templte kolona umesto Databound. Zatim bi trebao da postavis id edit text boxa za kolonu Naziv na npr. txtNaziv. Zatim u kodu :
TextBox naziv= (TextBox)gvKlijenti.Rows[e.RowIndex].FindControl("txtNaziv");

naziv.Text ti je text u editvanom textboxu

Ovo je bilo nabrzaka, nadam se da radi (na RowUpdating event sigurno radi)
[ oggie @ 01.12.2006. 14:04 ] @
Danas mi bas nesto ne ide, sto god mi odgovorite meni ne radi.

Moj kod TextBox naziv= (TextBox)grid.Rows[e.RowIndex].FindControl("Naziv")

javlja greske

'Textbox' is a type and cannot be used as an expression

Name 'naziv' is not declared

Comma,')' or a valid expression continuation is expected ('grid' mi je podvucen reckavom linijom i kad stanem ovo pise)

Stvarno ne znam gde gresim, ali ne mogu da verujem da je tako komplikovano uraditi jednu tako prostu stvar.

Pozdrav i hvala na odgovoru
[ oggie @ 04.12.2006. 09:20 ] @
Uspeo sam nesto da uradim ali i dalje ne radi kako treba. Evo mog koda:


<asp:GridView ID="grid" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Id" HeaderText="id" ReadOnly="True" />
<asp:TemplateField HeaderText="naziv">
<EditItemTemplate>
<asp:TextBox ID="txtNaziv" runat="server" Text='<%# Bind("Naziv") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Naziv") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>


Dim tb As TextBox = New TextBox
tb = grid.Rows(e.RowIndex).FindControl("txtNaziv")
Dim naziv As String = tb.Text

datatable.Rows(0).Item("Naziv") = naziv


E sad sta je problem. Ja u gridu imam vrednost "Pera" i editujem ga u "Mika", medjutim string Naziv i dalje ima vrednost "Pera".

Dakle kako da uzmem NEW VALUE tog text boxa , a ne originalni value?

[ sivan347 @ 04.12.2006. 15:36 ] @
Nije ti dobar event RowEditing On se okida kad se predje u edit mod. Ako radis update koristi event RowUpdating
Pozdrav
[ oggie @ 05.12.2006. 07:48 ] @
Izvinjavam se, pogresno sam se izrazio. Ovaj kod radim na RowUpdating event-u ali posto mi je grid rucno bound-ovan na datatable ne moze iz textbox-a da se izvuce nova editovana vrednost polja ,vec ona originalna. Nailazio sam na stranim forumima da se ljudi zale na ovaj problem i do sada jos niko nema odgovor....na zalost.

U svakom slucaju hvala na pokusaju.
[ MirkoDamnjanovic @ 20.03.2007. 18:26 ] @
gridview.Rows(e.RowIndex).Cells(1).Text

probaj sa sledećim

((TextBox)gridview.Rows[e.RowIndex].Cells[1].Controls[0]).Text
[ amici @ 30.04.2007. 23:20 ] @
Imao sam identican problem - u _RowUpdating nisam mogao nikako da dodjem do novih vrednosti polja. Doduse bila je malo drukcija situacija jer nisam koristio sqldatasource vec je gridview bio rucno punjen iz baze - npr:
gvBasket.DataSource = ManualOrder.GetBasketItems()
gvBasket.DataBind()

Ugl. probao sam da presretnem row_update event i u RowCommand metodu, ali bez uspeha.

Prvi problem koji vidim da se cesto javlja je taj da e.NewValues i e.OldValues (u rowUpdating) NE MOZES koristiti ako NE koristis sqldatasource. Jednostavno budu prazni.

Drugi i glavni problem za mene bio je sto sam ne pazeci, ubacio u Page_load re-bindovanje tog istog gridview-a i zaboravio na to, tako da se desavalo sledece:
- promenis vrednost u txt polju,
- kliknes na Update btn
- krene postback - stranica krene da se ucitava
- odradi se page_load - on rebinduje gridview, tj. ponovo ucita stare vrednosti iz baze i ponisti sve ono sto si ti promenio u txt polju
- nakon ovoga izvrsava se i rowcommand i rowupdating i eventualno rowupdated, tako da nema sanse da ikako igde procitas nove vrednosti polja.

Valjda ce ovo nekome pomoci.. mene je izludjivalo.

pozdrav, Amici.