我有SqlDataSource
这个查询:
SELECT [ProductName], [Debscription], [Price] FROM [MyDb] WHERE ([Date1] >= @Date1) ORDER BY [ProductName]">
当我加载页面时,它工作正常,只向我显示我想要的产品。
当我尝试更改GridView
的页面时,例如,转到第2页,它会刷新页面并在where子句丢失时生成大量页面索引。
我该如何解决这个问题?
我认为该声明已自动保存,但事实并非如此。
如何在分页期间保存where子句?
答案 0 :(得分:1)
对于动态分页,您应该使用ObjectDataSource而不是SqlDataSource。
答案 1 :(得分: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();
}