Avatar billede momentu Nybegynder
03. december 2008 - 20:27 Der er 4 kommentarer

Gridview get cell data

Hej

Jeg har brug for at trække celle data ud når en bruger trykker på en knap.

Meningen er at data skal være usynlig og jeg lægger det derfor ind i en templatefield:

    <asp:TemplateField HeaderText="" SortExpression="" Visible="FALSE">

<ItemTemplate>

<asp:Label ID="lblTaskID" runat="server" Text='<%# Eval("Bestil") %>' />

</ItemTemplate>  </asp:TemplateField>

Jeg gør så følgende i min codebehind:


For Each row As GridViewRow In GridView1.Rows

taskid = Convert.ToInt32(row.FindControl("lblTaskID"))

Label2.Text = taskid  'bare for at se det virker.

Jeg bliver ved med at få fejl og jeg har svært ved at dreje hvorfor og hvordan det så skal se ud ?

System.InvalidCastException: Unable to cast object of type 'System.Web.UI.WebControls.Label' to type 'System.IConvertible'.

og fejlen ligger i denne taskid = Convert.ToInt32(row.FindControl("lblTaskID")).ToString

Hvordan gør jeg det ?
Avatar billede montago Praktikant
08. december 2008 - 14:59 #1
problemet er at du har lavet en template - hvor ID'erne derfor bliver genereret .. FindControl returnere derfor endten null eller et array (er ik så stærk til den funktion...)

i stedet kan du tælle Cell's

--> (Rows[1].Cells[3] as Label).Text

eller noget lign...
Avatar billede montago Praktikant
08. december 2008 - 15:01 #2
(row.Cells[0] as Label).Text
Avatar billede montago Praktikant
08. december 2008 - 15:03 #3
det kan selvfølgelig også være at du bare skal hente attributten på kontrollen:

row.FindContro("lblTaskID").Text <-- som derefter kan convert'es
Avatar billede mikalj Nybegynder
08. december 2008 - 16:12 #4
taskid = Convert.ToInt32(row.FindControl("lblTaskID"));
er forkert

Du forsøger at lave en Label om til en int. Det du sikkert vil er at lave indholdet at din labels text property om til en int

FindControl() returnerer et objekt af typen "Control" (som label nedarver fra)
Du skal først caste denne til Label (Control har ikke en Text property) og derefter bruge Convert.ToInt32 til at koverterer dens indhold.

taskid = Convert.ToInt32( ((Label)row.FindControl("lblTaskID")).Text );
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester