Avatar billede baitianlong Nybegynder
21. november 2005 - 08:00 Der er 8 kommentarer og
1 løsning

datagrid og hashtable

hej, hvordan får jeg puttet data fra en hashtable i et datagrid?
Avatar billede Slettet bruger
21. november 2005 - 08:29 #1
<asp:DataGrid AutoGenerateColumns=False id="DataGrid1" runat="server">
<Columns >
    <asp:TemplateColumn HeaderText="HashTable">
          <ItemTemplate>
          <%# Container.DataItem.Key %> <br>
          <%# Container.DataItem.Value %>
          </ItemTemplate>
    </asp:TemplateColumn>
</Columns>
</asp:DataGrid>

'In Page_Load
Dim ht As New Hashtable()
ht.Add("emp1", "A")
ht.Add("emp2", "B")
ht.Add("emp3", "C")

DataGrid1.DataSource = ht
DataGrid1.DataBind()
Avatar billede baitianlong Nybegynder
21. november 2005 - 08:40 #2
ja, det har jeg også selv fundet på nettet, men jeg forstår åbenbart ikke at bruge det.

Som du ved fra det andet spørgsmål, har jeg nu et datagrid med ord og tal som key og value pairs, dette hashtable hedder wordcontainer...

Jeg må lige have lidt mere info
Avatar billede baitianlong Nybegynder
21. november 2005 - 08:42 #3
...forresten er det c# vi taler om her.
Avatar billede Slettet bruger
21. november 2005 - 08:46 #4
datagrid.DataSource = wordcontainer;

Nøglen er AutoGenerateColumns=False på datagrid.

Hvilken fejl får du ?

BTW er det ASP.NET du skal bruge det i ?
Avatar billede baitianlong Nybegynder
21. november 2005 - 08:50 #5
jeps, det er en webapp. Jeg har sat AutoGenerateColumns til false, men der kommer ikke noget i datagrid'et. Der er ellers data i hashtablen.
Avatar billede baitianlong Nybegynder
21. november 2005 - 08:51 #6
Denne her udskriver fint indholdet i hashtabellen, jeg skal bare have det ind i datagrid'et:

foreach(string z in wordcontainer.Keys)
{
    Response.Write("\n<br>" + z + "          " + wordcontainer[z]);
}
Avatar billede www.jakub.dk Nybegynder
21. november 2005 - 08:59 #7
Har du husket at kalde metoden DataBind for din DataGrid objekt efter at du har angivet DataSource.
Avatar billede baitianlong Nybegynder
21. november 2005 - 09:06 #8
ja, det virker dog hvir jeg opretter objekter med key,value pairsne og smider i en arraylist i mellemtiden, det virker bare lidt besværligt.

            foreach(string z in wordcontainer.Keys)
            {
                //Response.Write("\n<br>" + z + "          " + wordcontainer[z]);
                finalwords.Add(new Wordnumber(z, (int)wordcontainer[z]));
            }
            DataGrid1.DataSource = null;
            DataGrid1.DataSource = finalwords;
            DataGrid1.DataBind();
Avatar billede Slettet bruger
21. november 2005 - 09:15 #9
I ASPX fil:

<asp:DataGrid id="_CtlWords" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<%# GetKeyValue(Container.DataItem)%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

I onLoad :

if(! this.IsPostBack) {
    Hashtable wordcontainer = new Hashtable();
    wordcontainer.Add("Fisk", 10);
    wordcontainer.Add("Banan", 2);
    wordcontainer.Add("Ost", 12);
    wordcontainer.Add("Appelsin", 1);
           
    _CtlWords.DataSource = wordcontainer;
    _CtlWords.DataBind();
}

Helper:

        protected string GetKeyValue(object dataitem) {
            DictionaryEntry de = (DictionaryEntry)dataitem;

            return String.Format("{0}=>{1}", de.Key, de.Value);
           
        }
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