2014-05-23 54 views
0

下面是我的代码C# NET4在GridView的排序列,但我有此错误:在GridView中排序列

CS1502: The best overloaded method match for System.Data.DataView.DataView(System.Data.DataTable) has some invalid arguments 

在这条线为什么?:DataView sortedView = new DataView(GridViewBind());

public SortDirection dir 
{ 
    get 
    { 
     if (ViewState["dirState"] == null) 
     { 
      ViewState["dirState"] = SortDirection.Ascending; 
     } 
     return (SortDirection)ViewState["dirState"]; 
    } 
    set 
    { 
     ViewState["dirState"] = value; 
    } 
} 

protected void gridView_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    string sortingDirection = string.Empty; 
    if (dir == SortDirection.Ascending) 
    { 
     dir = SortDirection.Descending; 
     sortingDirection = "Desc"; 
    } 
    else 
    { 
     dir = SortDirection.Ascending; 
     sortingDirection = "Asc"; 
    } 

    DataView sortedView = new DataView(GridViewBind()); 
    sortedView.Sort = e.SortExpression + " " + sortingDirection; 
    GridView1.DataSource = sortedView; 
    GridView1.DataBind(); 
} 


public void GridViewBind() 
{ 
    sql1 = " SELECT * FROM `tbl` ORDER BY empid DESC; "; 

    dadapter = new OdbcDataAdapter(sql1, myConnectionString); 
    dset = new DataSet(); 
    dset.Clear(); 
    dadapter.Fill(dset); 
    GridView1.DataSource = dset.Tables[0]; 
    GridView1.DataBind(); 
    dadapter.Dispose(); 
    dadapter = null; 
    myConnectionString.Close(); 

} 
+0

请总是使用'​​使用'的所有类型的连接!因为你可以确保你的连接每次都会被放弃。 有关您可以在这里找到更多信息:http://stackoverflow.com/questions/5243398/will-a-using-block-close-a-database-connection – brothers28

回答

0

错误归因于此行

DataView sortedView = new DataView(GridViewBind()); 

函数GridViewBind()返回类型为void,这是不正确的。它应该返回一个DataTable

如果它返回DataTable那么你的代码将工作。

你需要修改你的函数如下

public DataTable GridViewBind() 
{ 
    sql1 = " SELECT * FROM `tbl` ORDER BY empid DESC; "; 

    dadapter = new OdbcDataAdapter(sql1, myConnectionString); 
    dset = new DataSet(); 
    dset.Clear(); 
    dadapter.Fill(dset); 
    DataTable dt=dset.Tables[0]; 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    dadapter.Dispose(); 
    dadapter = null; 
    myConnectionString.Close(); 
    return dt; 

} 
+0

是的错误是由于这条线......但解决方案? – Hamamelis

+0

@Hamamelis我修改了我的答案。 –

+0

非常感谢您的帮助,现在正在工作! – Hamamelis

0

使用数据视图来索数据。

public void GridViewBind() 
{ 
sql1 = " SELECT * FROM `tbl` ORDER BY empid DESC; "; 

dadapter = new OdbcDataAdapter(sql1, myConnectionString); 
dset = new DataSet(); 
dset.Clear(); 
dadapter.Fill(dset); 
DataTable dt = new DataTable(); 
dt=dset.Tables[0]; 
DataView dv = dt.DefaultView; 
dv.Sort = "empid desc"; 
DataTable sortedDT = dv.ToTable(); 
GridView1.DataSource = sortedDT; 
GridView1.DataBind(); 
dadapter.Dispose(); 
dadapter = null; 
myConnectionString.Close(); 

}