2017-06-14 85 views
0

過程中損失的where子句我有一個SqlDataSource與此查詢:SqlDataSource的尋呼

SELECT [ProductName], [Debscription], [Price] FROM [MyDb] WHERE ([Date1] >= @Date1) ORDER BY [ProductName]"> 

當我加載網頁,它工作正常,並表明我只說我想要的產品。 當我嘗試更改GridView的頁面時,例如,轉到第2頁,它會刷新頁面並在where子句丟失時生成大量頁面索引。

我該如何解決這個問題?

我認爲這個聲明是自動保存的,但事實並非如此。

如何在分頁過程中保存where子句?

回答

1

對於動態分頁,您應該使用ObjectDataSource而不是SqlDataSource。

1

如果您希望網格處理分頁,請將其綁定到DataTable或DataSet。對於前:

private void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!Page.IsPostBack) 
     BindData(); 
} 

private void BindData() 
{ 
    // Connect to the Database 
    SqlConnection myConnection = new SqlConnection(connection string); 

    // Retrieve the SQL query results and bind it to the DataGrid 
    string SQL_QUERY = "SELECT ProductName, UnitPrice, UnitsInStock " + 
        "FROM Products"; 
    SqlCommand myCommand = new SqlCommand(SQL_QUERY, myConnection); 

    // Use a DataTable – required for default paging 
    SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand); 

    DataTable myTable = new DataTable(); 
    myAdapter.Fill(myTable); 

    dgProducts.DataSource = myTable; 
    dgProducts.DataBind(); 
    myConnection.Close(); 
} 

https://msdn.microsoft.com/en-us/library/aa479006.aspx

+0

雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/16419576) – Drise

+0

我不確定原始答案/鏈接是否完全回答了問題,因此我跳過了代碼。用代碼更新。 – wazz