Avatar billede tdafoobar Nybegynder
24. maj 2006 - 02:47 Der er 4 kommentarer og
1 løsning

Databind 2 results til samme repeater ?

Hejsa

Jeg er ved at lave noget simple paging i asp.net og mysql.
Lige nu binder jeg mit data til en asp:repeater via.

msglist.DataSource = cmd.ExecuteReader();
msglist.DataBind();

og det virker helt fint, men da man ikke kan lave LIMIT og samtidig hente alle rows, skal jeg bruge et query mere. Men hvordan kan jeg så binde cmd2 som indeholder antal rows til samme asp:repeater ?
Avatar billede snepnet Nybegynder
24. maj 2006 - 08:12 #1
Er det paging du gerne vil lave?
Du kan se et eksempel her:
http://www.charon.co.uk/content.aspx?CategoryID=28&ArticleID=21
(der er mange andre)
Mvh
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 08:24 #2
Paging har jeg fuld styr på hvordan man laver, og selve paging delen er skam også lavet, jeg mangler bare det fulde antal rows (som jeg SKAL bruge 2 quries for at hente), for at kunne udregne frem/tilbage knapperne.
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 08:40 #3
tror jeg fandt ud af det. Men er det muligt at få nummeret på hvilken gennemgang asp:repeater'en er i gang med?
Avatar billede tdafoobar Nybegynder
24. maj 2006 - 08:49 #4
Fik det løst med denne kode:

      // Bind to paging
      MySqlCommand cmd2 = new MySqlCommand("SELECT FOUND_ROWS() AS numRows");
      cmd2.Connection = link;
      cmd2.Connection.Open();
      MySqlDataReader mdr = cmd2.ExecuteReader();
      mdr.Read();
      int numRows = mdr.GetInt32(0);

      DataSet ds = new DataSet();
      DataTable dt = ds.Tables.Add("links");
      dt.Columns.Add("offset",Type.GetType("System.String"));
      dt.Columns.Add("pageNum",Type.GetType("System.String"));
      dt.Columns.Add("isSelected",Type.GetType("System.String"));

      DataRow dr;
      int p = 1;
      for(int i=0;i<=(numRows/5);i+=5)
      {
        dr = dt.NewRow();
        dr[0] = i;
        dr[1] = p;
        dr[2] = "";
        if(i == OFFSET) { dr[2] = "class=\"selected\""; }
        dt.Rows.Add(dr);
        p++;
      }

      linklist.DataSource = ds;
      linklist.DataBind();

      cmd2.Connection.Close();


      <div id="paging">
      Pages
        <asp:Repeater ID="linklist" runat="server">
          <ItemTemplate>
            <a href="index.aspx?offset=<%# DataBinder.Eval(Container.DataItem,"offset") %>"
              <%# DataBinder.Eval(Container.DataItem,"isSelected") %>
            ><%# DataBinder.Eval(Container.DataItem,"pageNum") %></a>
          </ItemTemplate>
        </asp:Repeater>
      </div>
Avatar billede snepnet Nybegynder
24. maj 2006 - 12:05 #5
Er det nummeret på det item repeateren er ved at generere du er ude efter?

Du kan for øvrigt benytte en PagedDataSource til paging istedet, og hvis du benytter 2.0 er der endnu bedre muligheder.

Mvh
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