当我已经为GridView控件启用分页和排序时? 这是我的aspx代码:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:plantsSQLConnectionString %>"
SelectCommand="SELECT * FROM [Plants]"></asp:SqlDataSource>
我在Page_Load()中执行查询和DataBind,数据显示正确。我期待GridView为我处理分页和排序,但当我尝试页面或排序时,页面崩溃,我被告知提供Sorting和PageIndexChanging处理程序。 我做错了什么?感谢。
这是我背后的代码。您可以假设GetData有效,因为我看到记录显示正确。
protected void Page_Load(object sender, EventArgs e)
{
// Declare the query string.
String queryString = "Select * from plants";
// Run the query and bind the resulting DataSet
// to the GridView control.
DataSet ds = GetData(queryString);
if (ds.Tables.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
其他详细信息:如果我不执行代码并在aspx文件中执行查询,则GridView可以自动排序和分页。 [意思是我使用了向导并将GridView连接到aspx文件中的数据源,导致DataSource ID与GridView控件相关联。]在这种情况下如何进行分页和排序,而不是将代码移动到PageLoad?感谢您的任何见解。
答案 0 :(得分:1)
如果用户点击列,GridView还不知道如何排序。因此,您需要为可排序列提供SortExpression。 如果用户在同一列上单击两次,您可能还希望提供额外的功能来对升序/降序进行排序。因此,您需要将当前的SortExpression + SortDirection存储在f.e.在ViewState。
为什么以及何时排序可能无法自动运行的一些注意事项:
当数据源控制时 支持排序绑定 GridView控件,GridView控件 可以利用数据源 控制的能力和提供 自动排序功能。什么时候 GridView控件绑定到 数据源通过设置DataSource 以编程方式,您必须 提供排序功能 使用排序事件。
以下是有关排序的更多信息: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.allowsorting.aspx
为什么以及何时分页可能无法自动运行的一些注意事项:
如果数据源不支持 直接分页而不实现 ICollection接口, GridView控件无法页面。对于 例如,如果您正在使用 SqlDataSource控件并设置了它 DataSourceMode属性到DataReader, GridView控件无法实现 寻呼。
以下是有关GridView可能不支持直接分页的更多信息: http://msdn.microsoft.com/en-us/library/5aw1xfh3.aspx
修改:在数据绑定GridView之前,请记得在Page_Load中检查!
Page.IsPostback!否则,GridView将在回发中获得旧数据/分页/排序等。