Avatar billede mahyar Nybegynder
04. juni 2009 - 15:34 Der er 7 kommentarer og
1 løsning

DataList Control

Hej jeg har en Datalist control, hvor jeg har en template ind i den. Inde i templaten har jeg en Linkbutton. Jeg har brug for Text propertien i linkbutton, men jeg ved bare ikke hvordan jeg kan få hul igennem til den der Linkbutton.

er der ikke en der har en idé om hvordan det kan være? jeg vil tro det skal være noget lignende det her:

DataList1.ItemTemplate...LinkButton1.Text
DataList1.Items...LinkButton1.Text
Avatar billede Syska Mester
05. juni 2009 - 03:29 #1
kort ide til hvordan det kan gøre ...

I din ItemCommand får du index for hvad for en templete du har trykket på.

Så har du index og kan bruger noget ala:

LinkButton l = datalist.Items[index].FindControl("navnetPaaDinLinkButton") as LinkButton;

// ouT
Avatar billede mahyar Nybegynder
08. juni 2009 - 10:28 #2
Hej Buzz

den kode du har skrevet virker fint, men mit problem er ved index. Jeg vil gerne have index'et på den linkbutton der er klikket på. DataList1.SelectedIndex, virker ikke, da den smider en exception.
Avatar billede Syska Mester
08. juni 2009 - 23:13 #3
hej,

jeg går ud fra din OnLoad()
Kun smider data i din liste hvis det ikke er PostBack ...

Dvs din Event .. OnItemCommand burde have nogle værdier med som angiver Index.

e.Index eller e.SelectedIndex ... er jeg ret overbevist om :-)

Husk også at kontrollere at Index ikke er -1 ... dvs at der ikke er selected nogen.

// ouT
Avatar billede mahyar Nybegynder
09. juni 2009 - 11:04 #4
hej Buzz nedenstående er min kode. Jeg synes bare jeg har siddet fast i det der problem i nogle dage :)

Datalist'en og en SqlDatasource:

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource2"
                    RepeatColumns="3" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" GridLines="Both" OnEditCommand="DataList1_EditCommand" OnItemDataBound="DataList1_ItemDataBound" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" OnItemCommand="DataList1_ItemCommand" EditItemIndex="0" OnLoad="DataList1_Load" SelectedIndex="0" >
                    <ItemTemplate>
                         <asp:LinkButton ID="LinkButton3" runat="server" OnClick="LinkButton3_Click"
                            Text='<%# Eval("Navn") %>'></asp:LinkButton>
                    </ItemTemplate>
                    <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                    <ItemStyle BackColor="White" ForeColor="#330099" />
                    <SelectedItemStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
                    <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
                </asp:DataList><asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringSurfTown %>"
                    SelectCommand="SELECT [Navn] FROM [Faggruppe] WHERE ([Enabled] = @Enabled) ORDER BY [Navn]">
                    <SelectParameters>
                        <asp:Parameter DefaultValue="True" Name="Enabled" Type="Boolean" />
                    </SelectParameters>
                </asp:SqlDataSource>

-----------------------
Her kommer mine events som jeg ikke rigtig ved hvordan de skal programmeres. Det skal siges at jeg får data ind i datalisten ved hjælp af sqlDatasource'en. Så mit problem er kun at få text'en ud af den linkbutton(i ItemTemplate) som er trykket på.
----
  protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        LinkButton linkbutton = (LinkButton)e.Item.FindControl("LinkButton3");
        Session["IndexDataList"] = linkbutton.Text;
    }
    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.SelectedIndex = e.Item.ItemIndex; ;
        Session["KategoriListe"] = "aktiv";

    }
-------
et eller andet sted i koden vil jeg sætte Session["Branche"] lig med text'en af den linkbutton der er valgt. Måske noget lignende det her kode:

        Session["Branche"] = ((LinkButton)DataList1.Items[DataList1.SelectedIndex].FindControl("LinkButton3")).Text;

-------


Har du en anelse om hvordan det her drama skal slutte :-) ?
Avatar billede Syska Mester
09. juni 2009 - 13:41 #5
ItemCommand er den event jeg ville bruge ...

Men jeg kan ikke helt se formålet med at sætte en session værdi til værdien af den button.

Jeg ... du skal gøre det i ItemCommand event. Den vil så indeholde de data som er i det index.

// oUT
Avatar billede mahyar Nybegynder
09. juni 2009 - 15:58 #6
nu er det løst...vil du sende et svar :)
Avatar billede Syska Mester
09. juni 2009 - 21:44 #7
Hvad var det som manglede ? Kunne være rart at vide :-)

og et svar.
Avatar billede mahyar Nybegynder
10. juni 2009 - 11:03 #8
jeg brugte nedenstående kode. Det var ItemCommand der skulle bruges. :)

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.SelectedIndex = e.Item.ItemIndex;
        Session["KategoriListe"] = "aktiv";
        Session["Branche"] = ((LinkButton)DataList1.Items[DataList1.SelectedIndex].FindControl("LinkButton3")).Text;
        Session["SoegeOrd"] = null;
        Response.Redirect("Resultat.aspx");


    }
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