C# 使用C在ASP.NET 2中进行GridView排序
我需要在ASP.NET 2中使用C进行GridView排序,并尝试了本教程: 下面是我在GridView中对列进行排序的代码C net 2,但我遇到了以下错误:C# 使用C在ASP.NET 2中进行GridView排序,c#,asp.net,gridview,C#,Asp.net,Gridview,我需要在ASP.NET 2中使用C进行GridView排序,并尝试了本教程: 下面是我在GridView中对列进行排序的代码C net 2,但我遇到了以下错误: Exception Details: System.IndexOutOfRangeException: Cannot find table 0. 在这行为什么 Line 39: GridViewBind(); Line 40: DataTable dt = new DataTable(); Line
Exception Details: System.IndexOutOfRangeException: Cannot find table 0.
在这行为什么
Line 39: GridViewBind();
Line 40: DataTable dt = new DataTable();
Line 41: dt = ds.Tables[0];
Line 42: {
Line 43: string SortDir = string.Empty;
DataSet ds = new DataSet();
public SortDirection dir
{
get
{
if (ViewState["dirState"] == null)
{
ViewState["dirState"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["dirState"];
}
set
{
ViewState["dirState"] = value;
}
}
protected void gvEmployee_Sorting(object sender, GridViewSortEventArgs e)
{
GridViewBind();
DataTable dt = new DataTable();
dt = ds.Tables[0];
{
string SortDir = string.Empty;
if (dir == SortDirection.Ascending)
{
dir = SortDirection.Descending;
SortDir = "Desc";
}
else
{
dir = SortDirection.Ascending;
SortDir = "Asc";
}
DataView sortedView = new DataView(dt);
sortedView.Sort = e.SortExpression + " " + SortDir;
GridView1.DataSource = sortedView;
GridView1.DataBind();
}
}
public void GridViewBind()
{
SQL = " SELECT * FROM doTable; ";
try
{
conn.Open();
dadapter = new OdbcDataAdapter(SQL, conn);
dset = new DataSet();
dset.Clear();
dadapter.Fill(dset);
GridView1.DataSource = dset.Tables[0];
GridView1.DataBind();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
conn.Dispose();
}
}
编辑1
您能告诉我GridViewBind函数中声明的DataSet数据集在哪里吗?如果您在函数中声明了它,那么您的另一个dataset ds=new dataset为空,这就解释了异常。我建议删除GridViewBind函数中的声明,并使用DataSet ds变量。它应该是SQL=SELECT*FROM doTable;,非SQL=从doTable中选择*;谢谢你,我编辑了我的第一篇文章;在编辑1中,完整的代码.cs.删除数据集ds=新数据集;在这两个地方都使用另一个变量。非常感谢,现在正在工作;但有一个很近的问题吗?
using System;
using System.Configuration;
using System.Data;
using System.Data.Odbc;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Av_Default : System.Web.UI.Page
{
OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["cs"].ConnectionString);
string SQL;
OdbcDataAdapter dadapter;
DataSet dset;
DataTable dt = new DataTable();
DataSet ds = new DataSet();
public SortDirection dir
{
get
{
if (ViewState["dirState"] == null)
{
ViewState["dirState"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["dirState"];
}
set
{
ViewState["dirState"] = value;
}
}
protected void gvEmployee_Sorting(object sender, GridViewSortEventArgs e)
{
GridViewBind();
DataTable dt = new DataTable();
dt = ds.Tables[0];
{
string SortDir = string.Empty;
if (dir == SortDirection.Ascending)
{
dir = SortDirection.Descending;
SortDir = "Desc";
}
else
{
dir = SortDirection.Ascending;
SortDir = "Asc";
}
DataView sortedView = new DataView(dt);
sortedView.Sort = e.SortExpression + " " + SortDir;
GridView1.DataSource = sortedView;
GridView1.DataBind();
}
}
public void GridViewBind()
{
SQL = " SELECT * FROM doTAble; ";
try
{
conn.Open();
dadapter = new OdbcDataAdapter(SQL, conn);
dset = new DataSet();
dset.Clear();
dadapter.Fill(dset);
GridView1.DataSource = dset.Tables[0];
GridView1.DataBind();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
conn.Dispose();
}
}
protected void gvEmployee_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt = GetRows();
{
string SortDir = string.Empty;
if (dir == SortDirection.Ascending)
{
dir = SortDirection.Descending;
SortDir = "Desc";
}
else
{
dir = SortDirection.Ascending;
SortDir = "Asc";
}
DataView sortedView = new DataView(dt);
sortedView.Sort = e.SortExpression + " " + SortDir;
GridView1.DataSource = sortedView;
GridView1.DataBind();
}
}
public void GridViewBind(DataTable dt){
GridView1.DataSource=dt;
GridView1.DataBind();
}
public DataTable GetRows()
{
var SQL = " SELECT * FROM doTAble; ";
//You should use the "using" resource acquisition statement
// http://www.dotnetperls.com/sqlconnection
using(var conn=new OdbcConnection(ConfigurationManager.ConnectionStrings["cs"].ConnectionString))
{
conn.Open();
var dadapter = new OdbcDataAdapter(SQL, conn);
var dset = new DataSet();
dadapter.Fill(dset);
return dset.Tables[0];
}
}