GridView DataSource总是返回null
我想在网格视图中进行排序(ASP.Net 4.5)GridView DataSource总是返回null
代码非常简单。网格视图具有使用简单的查询像SELECT * FROM表
排序事件下面的代码AllowSorting和的AutoGenerateColumns设置为真正
网格视图被填充上按一下按钮(代码可能有一些语法错误,因为我只是写它而不是从原始源复制它):
protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt = grid1.DataSource as DataTable;
if(dt != null)
{
//do some sorting
}
}
问题是dt始终为空。我尝试使用以下但相同的问题。
DataTable dt = (DataTable)grid1.DataSource;
我试图保存数据表(上填充的GridView当按钮单击事件)的视图状态,然后当我把它上面的排序方法,现在DT不为空,但它仍然是空的,也有在里面0行。
为什么dt为空以及如何进行排序?
编辑按钮点击
代码如下
SqlConnection con = new SqlConnection(strConnection);
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = con;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from titles";
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);
DataTable dtRecord = new DataTable();
sqlDataAdap.Fill(dtRecord);
grid1.DataSource = dtRecord;
ViewState["grid1"] = dtRecord;
grid1.DataBind();
提供给数据源转换回一个DataTable,尝试这样的事情。设置GRID1的数据源后,补充一点:
ViewState["mydatasource"] = dtRecord;
然后,添加到这个排序事件:
DataTable dt = ViewState["griddatasource"] as DataTable;
对于排序,你可以试试:
DataView dv = dt.DefaultView;
dv.Sort = "col1 desc";
DataTable sortedDT = dv.ToTable();
最终代码会是这样的:
protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt = ViewState["griddatasource"] as DataTable;
if(dt != null)
{
DataView dv = dt.DefaultView;
dv.Sort = "col1 desc";
DataTable sortedDT = dv.ToTable();
grid1.DataSource = dortedDT;
}
}
BindingSource仅在WinForms中可用。 –
尝试更新。 – Hank
我已经做到了这一点,但没有运气。我通过在GridView_Sorting事件中再次调用该SQL语句来解决它。 –
如何和wh你是否设置网格的数据源属性? – Steve
请使用您设置'grid1.DataSource'的代码以及SQL语句更新OP。 – Hank
你可以给你设置数据源的行吗? –