Avatar billede thomas_regin Nybegynder
16. juli 2002 - 15:03 Der er 11 kommentarer og
1 løsning

Datagrid...

Hejsa!

Jeg har et spørgsmål, som garanteret er "piece of cake", men jeg er stadig lidt ny i forhold til C# og .Net!

Mit problem er, at jeg har hentet noget data ud fra databasen, som jeg nu gerne vil vise som en "Afstemning" i et datagrid.

Problemet er så, at hvis jeg bruger Datagrid, så vil den vise "Spørgsmålet" og "Svaret" i tabeller ved siden af hinanden, og altså ikke under hinanden.

Min HTML ser således ud:

<asp:DataGrid
        ID=MyDataGrid
        AutoGenerateColumns=False
        Width=800
        BorderColor="#000000"
        BackColor="#CCCCCC"
        Font-Bold=True
        ForeColor="#000000"
        Runat=server>
        <Columns>
            <asp:BoundColumn DataField=QUESTION></asp:BoundColumn>
            <asp:BoundColumn DataField=ANSWERS></asp:BoundColumn>
        </Columns>
        </asp:DataGrid>

Er der nogen måde man kan få det til at stå under hinanden på!??..

På forhånd tak,

Thomas Regin.
Avatar billede odegaard Nybegynder
17. juli 2002 - 20:34 #1
Prøv f.eks. med noget andet end et datagrid. F.eks. <asp:Repeater>
Avatar billede odegaard Nybegynder
17. juli 2002 - 20:52 #2
For lige at uddybe lidt kommer her et eksempel. Jeg er selv utrolig glad for repeater-kontrollen, da denne er nem tilpasse ens eget behov.
-------------------------
<asp:repeater id="myRepeater" runat="server">
<HeaderTemplate>
  <table>
</HeaderTemplate>
<ItemTemplate>
  <tr bgcolor="#ffffff">
      <td>Question:</td>
      <td><%# DataBinder.Eval(Container.DataItem, "Question") %></td>
  </tr><tr bgcolor="#bbbbbb">
      <td>Answer:</td>
      <td><%# DataBinder.Eval(Container.DataItem, "Answers") %></td>
  </tr>
</ItemTemplate>
<SeparatorTemplate>
    <tr height="1px" bgcolor="#909090"><td/></tr>
</SeparatorTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>
</asp:Repeater>
Avatar billede thomas_regin Nybegynder
17. juli 2002 - 21:22 #3
Nu spørger jeg sikkert dumt, men i forhold til, at jeg stadig er helt ny udi .Net, så tager jeg chancen:

Hvorfra henter du Container.DataItem? Ingen af mine funktioner indeholder en metode, der hedder DataItem?

Ellers en rigtigt fed rutine, den Repeater!!

Du får points, så snart jeg har fundet ud af det med DataItem! ;)

Thomas.
Avatar billede odegaard Nybegynder
17. juli 2002 - 21:34 #4
Du binder dit datasæt til MyRepeater, præcis som du ville gøre med et datagrid.
Dvs.
MyRepeater.DataSource = MyDataSet
MyRepeater.DataBind()

De dersens Container.DataItem refererer blot til datasættet. Sådan gør man nu engang bare :-)
Du kan også nøjes med at skrive <%# Container.DataItem("Question") %> hvis du ikke skal ændre på værdierne (f.eks. formaterer datoer, tal osv.).
Avatar billede odegaard Nybegynder
17. juli 2002 - 21:37 #5
Ifølge SDK'en, hører DataItem iøvrigt til under RepeaterItem-klassen.
Hvis du har SDK'en installeret, kan du se her: ms-help://MS.NETFrameworkSDK/cpref/html/frlrfsystemwebuiwebcontrolsrepeateritemmemberstopic.htm
Avatar billede thomas_regin Nybegynder
17. juli 2002 - 21:56 #6
Hejsa Odegaard!

Jeg kan ikke helt få det til at virke endnu, men det virker dog alligevel som om du har helt ret! Du får pointene, så roder jeg lidt videre!!

Tak for hjælpen! :)

Thomas.
Avatar billede odegaard Nybegynder
17. juli 2002 - 22:05 #7
Nu kræver eksemplet jo at du har et dataset med kolonnerne "Question" og "Answers". Dette skal du huske at binde til repeater'en.
Hvad får du af fejl ?
Avatar billede thomas_regin Nybegynder
17. juli 2002 - 22:38 #8
Jeg får ingen fejl, men heller ikke noget output whatsoever! Jeg har naturligvis en database med Question og Answers i! Problemet, tror jeg, er min DataBinding, som ikke helt virker efter hensigten!

SqlConnection myConn = new SqlConnection("server=localhost;database=tr;Trusted_Connection=yes");
            SqlDataAdapter myCommand = new SqlDataAdapter("select * from QUESTIONNAIRE",myConn);
            DataSet ds = new DataSet();
            myRepeater.DataSource=ds;
            myRepeater.DataBind();

Kan du se, om det ser rigtigt ud?

På forhånd tak,

Thomas.
Avatar billede odegaard Nybegynder
17. juli 2002 - 22:49 #9
ja... du får jo aldrig fyldt ds med noget som helst
Avatar billede odegaard Nybegynder
17. juli 2002 - 22:52 #10
myCommand.Fill(ds);
myCommand.Dispose();

og derefter:
myRepeater.Datasource=ds;
myRepeater.DataBind();
Avatar billede thomas_regin Nybegynder
17. juli 2002 - 23:30 #11
Fantastisk!!!.. Det virkede sgu'! Jeg er blevet meget klogere!! :)

Mange tak for hjælpen!!

Thomas!
Avatar billede odegaard Nybegynder
18. juli 2002 - 11:39 #12
Det var så lidt.
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
Kurser inden for grundlæggende programmering

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