Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView数据源始终返回null_C#_Sorting_Gridview_Datatable - Fatal编程技术网

C# GridView数据源始终返回null

C# GridView数据源始终返回null,c#,sorting,gridview,datatable,C#,Sorting,Gridview,Datatable,我正在尝试在网格视图中进行排序(ASP.Net 4.5) 代码非常简单。栅格视图的允许排序和自动生成列设置为真 网格视图是使用简单的查询(如SELECT*fromtable)在单击按钮时填充的 排序事件有以下代码(代码可能有一些语法错误,因为我只是编写它,而不是从原始源代码复制它): 问题是dt始终为空。我试着使用下面的方法,但问题是一样的 DataTable dt = (DataTable)grid1.DataSource; 我尝试在viewstate中保存datatable(在填充grid

我正在尝试在网格视图中进行排序(ASP.Net 4.5)

代码非常简单。栅格视图的允许排序自动生成列设置为

网格视图是使用简单的查询(如SELECT*fromtable)在单击按钮时填充的

排序事件有以下代码(代码可能有一些语法错误,因为我只是编写它,而不是从原始源代码复制它):

问题是dt始终为空。我试着使用下面的方法,但问题是一样的

DataTable dt = (DataTable)grid1.DataSource;
我尝试在viewstate中保存datatable(在填充gridview时单击按钮事件),然后在上面的排序方法中调用它时,现在dt不为null,但它仍然为空,其中有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;
    }
}
最终代码类似于:

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;
    }
}

要将数据源转换回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;
    }
}
最终代码类似于:

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;
    }
}

如何以及何时设置网格的datasource属性?请使用设置代码
grid1.datasource
以及SQL语句更新OP。请给出设置datasource的行。此语法正确
DataTable dt=(DataTable)grid1.datasource问题是您没有向我们显示您最初为网格设置数据源的位置1请显示与当前问题和/或问题相关的所有相关代码..我已使用按钮单击事件代码更新了问题。您如何以及何时设置网格的数据源属性?请使用您的代码更新OP将
grid1.DataSource
与SQL语句一起设置。请给出设置DataSource的行。此行的语法正确
DataTable dt=(DataTable)grid1.DataSource问题是您没有向我们显示最初为grid1设置数据源的位置。请显示与当前问题和/或问题相关的所有相关代码。我已使用按钮单击事件代码更新了问题。BindingSource仅在WinForms中可用。我已经完成了此操作,但运气不佳。我通过在GridView_排序事件中再次调用该SQL语句解决了这个问题。运行一个SQL语句两次或两次以上似乎有点低效。如果您全局保存dt,然后直接使用它呢?这并不理想,但比运行SQL两次或多次更有效。BindingSource仅在WinForms中可用。我已经这样做了,但运气不好。我通过在GridView_排序事件中再次调用该SQL语句解决了这个问题。运行一个SQL语句两次或两次以上似乎有点低效。如果您全局保存dt,然后直接使用它呢?不理想,但比运行SQL两次或多次更有效。