none
GridView 排序 和数据存进数据库问题 RRS feed

  • 问题

  • 1.GridView点击标题进行排序时一定要重新从数据库取数据吗?
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            if ((SortDirection)ViewState["SortDirection"] == SortDirection.Ascending)
            {
                ViewState["SortDirection"] = SortDirection.Descending;
                BindData(e.SortExpression + " desc");
                
            }
            else
            {
                ViewState["SortDirection"] = SortDirection.Ascending;
                BindData(e.SortExpression + " asc");
                
            }
        }

    上面代码的BindData()是去重新从数据库取,怎么样实现不重取,因为我的GridView中绑定的数据是取出来之后经过筛选的,筛选之后进行排序。

    2.如何将GridView中的数据存储到数据库???

    2012年1月12日 2:23

答案

  • 楼主好:)

    1)因为重新排序之后需要更新整个GridView,所以你必须要有一个绑定的操作。如果你不想从数据库中取出数据,在数据量少的情况下,允许你可以先使用过滤,然后把过滤的结果存入DataTable+ViewState(或者Cache等)中,这样只要对DataTable进行排序,然后在GridView_Sorted事件中直接绑定到GridView中即可。

    2)两个方法:

    2.1)直接使用foreach方式遍历每一个GridViewRow,然后取出数据,使用SqlCommand进行更新。

    2.2)使用缓存方式,假设刚才的DataTable是通过SqlDataAdapter生成的,那么先使用SqlCommandBuilder为该DataAdapter生成增删改查方法,然后在最终需要保存数据的地方(比如按钮中,直接调用adapter.Update(dt))即可。

    附加说明:如果仅仅是排序,你没有修改数据的话,无需存入数据库的;如果需要修改过滤后的结果,不妨你可以把握Row_Editing时间,把对应的DataTable中的内容进行修改,然后按照2.2的方式存储即可。谢谢了!


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处


    2012年1月12日 2:32