2017-06-14 157 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