2014-05-23 56 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(); 

}