Avatar billede kbha Nybegynder
22. december 2011 - 09:58 Der er 6 kommentarer og
1 løsning

Tilføje dynamisk checkbox til tabel række

Jeg har lavet en foreach løkke, som skriver nogle felter ud i en tabel række. Nu vil jeg gerne have tilføjet en checkbox til hver række, som jeg senere kan bruge til at hive informationer ud om den pågældende række via et ID som jeg giver checkboxen.

Her laver jeg min tabel række:

                        litFakturaVisning.Text += "<tr style=\"background-color:" + FarveSkift + "\">"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + "0" + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + Row["FELT_NAVN"].ToString()
                                                + "</td>"
                                                + "<td>"
                                                + "CHECKBOX ØNSKES INDSAT HER"
                                                + "</td>"
                                                + "</tr>";

Jeg har forsøgt at gøre således (der hvor der står "CHECKBOX ØNSKES...."):

                        chkBox = new CheckBox();
                        chkBox.ID = "Chk" + Row["SqlID"];

                        pnlFakturaVisning.Controls.Add(chkBox);

Men så smider den mine checkboxe ned i bunden af mit panel (logisk nok), og ikke ind på hver række.

Er der nogle der har et forslag til hvordan jeg kan få mine checkboxe ind på hver række, og ikke i bunden af mit panel?
Avatar billede keysersoze Guru
22. december 2011 - 12:14 #1
Som udgangspunkt ville jeg skrive data til siden på en anden måde - fx ved at benytte en Repeater, hvor du kan sætte checkboxen direkte ind.

Alt afhængig af hvad du skal bruge checkboxen til kan du også nøjes med at tilføje en almindelig HTML-checkbox i din løkke.

Ellers er du nok nødt til i din løkke at tilføje kontroller i stedet for plaintext - fx en table-kontrol med rows og columns og i passende row så tilføje din checkbox.
Avatar billede janus_007 Nybegynder
22. december 2011 - 12:27 #2
Det er ihvertfald en helt forkert fremgangsmåde du benytter der, ligner noget Classic ASP.

Du skal bruge en ganske normal GridView, den kan alt det du gerne vil.

Når du så når til din checkbox så skal du blot lave en templated column, noget ala:

<Columns>           
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkStatus" runat="server"
                            AutoPostBack="true" OnCheckedChanged="chkStatus_OnCheckedChanged"
                            Checked='<%# Convert.ToBoolean(Eval("Approved")) %>'
                            Text='<%# Eval("Approved").ToString().Equals("True") ? " Approved " : " Not Approved " %>' />
                    </ItemTemplate>                   
                </asp:TemplateField>
               
                <asp:BoundField DataField="FELT_NAVN" HeaderText="FELT_NAVN" />                   
                <asp:BoundField DataField="FELT_NAVN" HeaderText="FELT_NAVN"  />
            </Columns>

Så får du helt automatisk genereret din tabel :)
Avatar billede kbha Nybegynder
20. maj 2012 - 09:23 #3
Beklager mit meget sene svar.

Jeg valgte at bruge et GridView, så janus_007 du må gerne smide et svar.
Avatar billede keysersoze Guru
20. maj 2012 - 19:37 #4
ulempen ved et gridview fremfor fx en repeater er at du lidt firkantet set overlader din HTML-kode til en kontrol og dermed mister du selv lidt indflydelse på hvor pæn koden i sidste ende bliver.
Avatar billede janus_007 Nybegynder
21. maj 2012 - 17:40 #5
Top :)

keysersoze -> Ja.. det gør man jo lidt, meeeen en simpel tabel kan vidst ikke laves helt forkert med et gridview.... jeg er enig :)
Avatar billede janus_007 Nybegynder
21. maj 2012 - 21:24 #6
og et svar
Avatar billede keysersoze Guru
22. maj 2012 - 21:58 #7
enig - men der er trods alt mere i det end det, jo simplere kontroller jo hurtigere rendering og jo hurtigere kode :)
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