必须在使用DataView之前设置DataTable

时间:2010-01-29 09:20:02

标签: c# asp.net gridview sorting

当我尝试手动排序我的表时,我收到此错误: 必须在使用DataView之前设置DataTable。 代码是:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {

        DataTable sourceTable = GridView1.DataSource as DataTable;
        DataView view = new DataView(sourceTable);
        string[] sortData = Session["sortExpression"]!= null ? Session["sortExpression"].ToString().Trim().Split(' ') : null;
        if (sortData != null && e.SortExpression == sortData[0])
        {
            if (sortData[1] == "ASC")
            {
                view.Sort = e.SortExpression + " " + "DESC";
                Session["sortExpression"] = e.SortExpression + " " + "DESC";
            }
            else
            {
                view.Sort = e.SortExpression + " " + "ASC";
                Session["sortExpression"] = e.SortExpression + " " + "ASC";
            }
        }
        else
        {
            view.Sort = e.SortExpression + " " + "ASC";
            Session["sortExpression"] = e.SortExpression + " " + "ASC";
        }

    }

哪里错了?

3 个答案:

答案 0 :(得分:3)

最有可能的GridView1.DataSource为null。 您可以在此处找到有关Gridview排序的教程:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx

答案 1 :(得分:0)

您的数据表也可能需要成为数据集的一部分。

相似
DataSet ds = new DataSet()
DataTable sourceTable = GridView1.DataSource as DataTable;
ds.Tables.Add(sourceTable)
DataView view = new DataView(sourceTable);
string[] sortData = Session["sortExpression"]!= null ? Session["sortExpression"].ToString().Trim().Split(' ') : null;

这只是来自奇怪的过去经历

答案 2 :(得分:0)

当我用[DataObject]修饰符错误地标记了一个类时,这发生在我身上。这意味着整个类必须作为数据源是“可绑定的”,而事实并非如此。删除标签可消除错误。