Avatar billede anders_cp Nybegynder
28. januar 2009 - 11:44 Der er 10 kommentarer og
1 løsning

Vælge felter fra GridView

Hej
Det burde vel være nemt, men jeg har ikke kunne hitte ud af at hente data fra et gridview :-(

Her er gridview'et fra .aspx-filen:
<asp:GridView ID="GridSMSusers" runat="server" BorderWidth="1px" OnSorting="GridViewSMSusers_Sorting"
                                    OnRowDataBound="GridSMSusers_RowDataBound" AutoGenerateColumns="false" AllowSorting="true"
                                    Width="505px">
                                    <HeaderStyle CssClass="DataGridHeader" />
                                    <Columns>
                                        <asp:TemplateField>
                                            <HeaderTemplate>
                                            <input id="chkAllItems" type="checkbox" onclick="CheckAllDataGridCheckBoxesWithCheckboxID(document.forms[0].chkAllItems.checked, 'GridSMSusers','SMSselector' );" />
                                            </HeaderTemplate>
                                            <ItemTemplate>
                                                <asp:CheckBox ID="SMSselector" runat="server"  />
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:BoundField DataField="EmpName" SortExpression="EmpNameSort" HeaderText="Medarbejder" />
                                        <asp:BoundField DataField="SMSnumber" HeaderText="SMS-nummer" />
                                        <asp:BoundField HeaderText="Status" />
                                    </Columns>
                                </asp:GridView>

CheckAllDataGridCheckBoxesWithCheckboxID er en javascript-funktion jeg har lavet til at toggle elle checkboxene i gridviewet.

Det er de checkede felter fra DataField="SMSnumber", som jeg ønsker at få fat i.

.cs-filen
int i = 0;
// Iterate through the SMS.rows property
foreach (GridViewRow row in GridSMSusers.Rows)
{
    // Access the checkBox
    CheckBox cb = (CheckBox)row.FindControl("SMSselector");
    if (cb != null && cb.Checked)
    {
        i++;
        Page.Response.Write("<br />Tæller: " + i);
        Page.Response.Write("<br />RowIndex: " + row.RowIndex);
        Page.Response.Write("<br />");
    }
}

row.RowIndex virker i og med det giver indekset for rækkkerne startene med 0.

Men jeg har som skrevet ikke kunne få fingre i det enkelte felt som er checket, og det er feltet DataField="SMSnumber", det drejer sig om. Har prøvet 117 ting, så jeg håber på hjælp her ;)
Avatar billede montago Praktikant
28. januar 2009 - 13:57 #1
hvad med at sætte en CheckedChanged event på checkboxen, og få fat i den derved ?
Avatar billede montago Praktikant
28. januar 2009 - 13:57 #2
+ AutoPostback = true
Avatar billede anders_cp Nybegynder
28. januar 2009 - 14:22 #3
jo, det kan jeg godt, men - stadigvæk - hvordan får jeg fat i feltet DataField="SMSnumber", evt. via dit forslag til CheckChanged - eventen?
Avatar billede montago Praktikant
28. januar 2009 - 14:43 #4
<asp:CheckBox ID="SMSselector" runat="server" CheckedChanged="eventhandler" AutoPostBack="true" />


//**

void eventhandler(object sender, EventArgs e){
  CheckBox cb = sender as CheckBox;


}
Avatar billede anders_cp Nybegynder
28. januar 2009 - 14:51 #5
jo tak det har jeg forstået, men det er feltet DataField="SMSnumber". Det kan godt være det er selvindlysende, men det er heri mit problem ligger..
Avatar billede montago Praktikant
28. januar 2009 - 15:32 #6
er det serverside eller clientside ?

er det selve cellen du vil have fat i... ? / eller DOM objectet... ?
Avatar billede anders_cp Nybegynder
28. januar 2009 - 15:49 #7
indholdet af cellen, for klikkede værdier:

cb EmpName            SMSnumber
  Medarbejder        SMS-nummer Status
X Henriette Petersen  12345678
  Henrik Hansen        98765412 


Så jeg ønsker i koden at finde alle de checkede navnes tlf.numre. I dette tilfælde Henriette Petersen med sms nummer: 12346578.
Jeg har allerede fundet ud af indekset for checkede checkbokse (se min oprindelige kode). I dette tilfælde er vil ovenstående give:
Page.Response.Write("<br />RowIndex: " + row.RowIndex);
0
Avatar billede montago Praktikant
28. januar 2009 - 15:59 #8
jeg fatter ikke hvad det er du vil have ud...

har du prøvet:

GridSMSusers.Rows[row.RowIndex].Cells[???]
Avatar billede anders_cp Nybegynder
28. januar 2009 - 16:13 #9
ja, jeg kan kunne godt se vi talte lidt forbi hinanden, men sidste hint er noget af det jeg søger ;)

Desværre får jeg ikke fat i tlf.nummmeret:
Page.Response.Write("<br />Telefonnummer: " + GridSMSusers.Rows[row.RowIndex].Cells[1].ToString());

Telefonnummer: System.Web.UI.WebControls.DataControlFieldCell
Avatar billede anders_cp Nybegynder
28. januar 2009 - 16:22 #10
arhgh. Nu har jeg fundet ud af det :-)
Havde faktisk prøvet dit forslag tidligere, men nu har jeg fundet løsningen:
Page.Response.Write("<br />Telefonnummer: " + GridSMSusers.Rows[row.RowIndex].Cells[2].Text);

Men det var dit sidste hint, som førte mig til målet.
Du må gerne lægge et svar
Avatar billede montago Praktikant
29. januar 2009 - 09:39 #11
cool
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