Toon posts:

[ASP.NET/C#] Paging gridview - custom select query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal

Ik ben redelijk nieuw wat betreft asp.net en heb het volgende probleem:

Op mijn pagina heb ik een gridview staan met een paging property. Aan deze gridview hangt een lege sqldatasource. De sql voor deze datasource genereer ik dynamisch in de code afhankelijk op welke velden de gebruiker wil zoeken. De sql query hang ik na het maken aan deze sqldatasource en ik doe een databind op de gridview. So far, so good.

Wanneer mijn gridview meerdere pagina's terug geeft en ik wil naar bv. pagina 2 gaan, laat hij niets meer zien en is mijn gridview niet meer zichtbaar.

Weet er iemand hoe ik mijn volgende pagina's te zien krijg???

NB. heb de query die gemaakt wordt in debug er al eens uitgeknipt en in mijn datasource hardcoded gehangen en dan werkt het.
NB. ook met een dataset krijg ik het niet aan de praat, dus dataset maken adhv dynamische sql en vervolgens de dataset binden aan de gridview

Alvast bedankt,

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

Wat heb je voor code tot nu toe? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Search_Page.aspx.cs
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public partial class Search_Page : System.Web.UI.Page
{    
    // basic search query
    private string searchQuery = "SELECT " +
                                    "[document].documentkey, " +
                                    "[document].quotes, " +
                                    "[document].title, " +
                                    "[document].category " +
                                  "FROM " +
                                    "[document] " +                                  
                                  "WHERE [document].status = 1";

    protected void Page_Load(object sender, EventArgs e)
    {
      // on initialisation
        if (!Page.IsPostBack)
        {
        // TODO added code here
      }
    }       

    protected void Button1_Click(object sender, EventArgs e)
    {
    // TODO extend query based on filled search criteria

    // the selectquery for the datasource
    SqlDataSource2.SelectCommandType = SqlDataSourceCommandType.Text;
      SqlDataSource2.SelectCommand = searchQuery;
        
      // bind this update of the data source to the gridview
      myGridView.DataBind();
    }       
}


Search_Page.aspx
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<asp:Button ID="Button1" runat="server" Text="Find" OnClick="Button1_Click" /><br />
<asp:GridView ID="myGridView" runat="server" AllowPaging="True" AllowSorting="True"
        AutoGenerateColumns="False" DataKeyNames="documentkey" CellPadding="4" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="myGridView_SelectedIndexChanged" OnPageIndexChanging="myGridView_PageIndexChanging" PageSize="2" DataSourceID="SqlDataSource2">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="documentkey" HeaderText="Id" SortExpression="documentkey" InsertVisible="False" ReadOnly="True" />
            <asp:BoundField DataField="title" HeaderText="Title" SortExpression="title" />           
            <asp:BoundField DataField="quote" HeaderText="Quote" SortExpression="quote" />
            <asp:BoundField DataField="category" HeaderText="Category" SortExpression="category" />            
        </Columns>
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <EditRowStyle BackColor="#999999" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <EmptyDataTemplate>
            &nbsp;
        </EmptyDataTemplate>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" SelectCommand="">
    </asp:SqlDataSource>

Verwijderd

Topicstarter
Problem solved:

Toch maar weer een dataset gebruikt en het volgende gedaan op de onpagindexchangingevent:

C#:
1
2
3
4
5
6
7
8
9
protected void myGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        myGridView.PageIndex = e.NewPageIndex;
        DataSet ds = new DBManager.getDataSet(searchQuery);

        // bind this to the gridview
        myGridView.DataSource = ds;
        myGridView.DataBind();
    }

Tnx voor de eventuele moeite!

Maar rest nog 1 vraag: weet er iemand hoe je de sql kan limiteren tot een bepaald aantal? Dus als ik op page 1 zit in mijn gridview dat ik maar records 0-10 hoef op te halen ipv heel de DB table opnieuw te gaan ophalen?

Tom.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

Waar is myGridView_PageIndexChanging ?
Tnx voor de eventuele moeite!

Maar rest nog 1 vraag: weet er iemand hoe je de sql kan limiteren tot een bepaald aantal? Dus als ik op page 1 zit in mijn gridview dat ik maar records 0-10 hoef op te halen ipv heel de DB table opnieuw te gaan ophalen?

Tom.
[rml][ SQL SERVER] select top @param * from... kan dat?[/rml] :P

[ Voor 82% gewijzigd door gorgi_19 op 07-06-2006 23:32 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op woensdag 07 juni 2006 @ 23:32:
Waar is myGridView_PageIndexChanging ?
Huh? :?
Pagina: 1