简体   繁体   English

使用C#在ASP.NET 2中进行GridView排序

[英]GridView Sorting in ASP.NET 2 using C#

I need GridView Sorting in ASP.NET 2 using C# and tried this tutorial: http://www.dotnetfox.com/articles/gridview-sorting-example-in-Asp-Net-using-C-Sharp-1082.aspx 我需要使用C#在ASP.NET 2中进行GridView排序,并尝试了本教程: http : //www.dotnetfox.com/articles/gridview-sorting-example-in-Asp-Net-using-C-Sharp-1082.aspx

Below is my code C# net 2 for sorting column in GridView but I've this error: 下面是我的代码C#net 2,用于对GridView中的列进行排序,但是出现此错误:

Exception Details: System.IndexOutOfRangeException: Cannot find table 0.

in this line why? 在这行中为什么?

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

EDIT 1 编辑1

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM