webForumDet fria alternativet

Hämta editeringsvärde från DataGrid

.NET

7 svar · 218 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Om jag ritar ut en Datagrid, och väljer att ha en funktion för att redigera poster.

exempelvis såhär:

private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)

Om jag nu vill hämta värdet ur en post från en speciell cell, så har jag försökt med detta:

((TextBox)e.Item.FindControl("txtName")).Text;

Men det vill inte fungera, hur skall jag göra?

Medlem sedan apr. 20012 266 inlägg
#2

Re: Hämta editeringsvärde från DataGrid

Brimba skrev:

Hej!

Om jag ritar ut en Datagrid, och väljer att ha en funktion för att redigera poster.

exempelvis såhär:

private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)

Om jag nu vill hämta värdet ur en post från en speciell cell, så har jag försökt med detta:

((TextBox)e.Item.FindControl("txtName")).Text;

Men det vill inte fungera, hur skall jag göra?

Hej, testa detta

((TextBox)e.Item.Cells[0].Controls[0]).Text

Fungerar utmärkt för mig.

Finns ett utmärkt exempel här: http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid6.src

Medlem sedan dec. 19995 874 inlägg
#3

Nix, den säger Specified cast is not valid.

Medlem sedan apr. 20012 266 inlägg
#4

Skulle jag kunna få se hela koden?
Observera att du inte kan ((TextBox)e.Item.Cells[0].Controls[0]).Text om Cells pekar mot din EditColumn

Medlem sedan juni 20011 732 inlägg
#5

Nix, den säger Specified cast is not valid.

Det beror på att den första kontrollen alltid är en literalcontrol och du försöker typkonvertera den till en textbox, det går inte. Du får helt enkelt gräva dig in i din datagrid, jag brukar använda response.write för att skriva ut var jag har hittat och så jag vet att jag befinner mig på rätt ställe. Findcontroll kollar ju bara "längst ut", vissa kontroller har ju kontroller i sig och då hittar du dem inte om du inte först går in i dessa.

((TextBox)e.Item.Cells[X].Controls**[1]**).Text

Medlem sedan apr. 20012 266 inlägg
#6

Första kontrollen kan omöjligt alltid vara en literalcontrol eftersom det funkar utmärk för mig att köra Controls[0].

Medlem sedan juni 20011 732 inlägg
#7

Första kontrollen kan omöjligt alltid vara en literalcontrol eftersom det funkar utmärk för mig att köra Controls[0].

Ah, lite fel av mig. Det beror på om du har gjort templatecolumns eller boundcolumns. Har du templates så blir det alltid en literalcontrol som första kontroll... jag gör nästan alltid templates. :) Nu vet jag inte hur Brimba har gjort men felmeddelandet tyder ju väldigt mycket på att han typkonverterar något till en textbox som inte är en textbox.

Medlem sedan apr. 20012 266 inlägg
#8

jo, en bra sak man kan göra är att köra .GetType() för att få reda på vad det är för något :P

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)