0

Below is my code C# net4 for sorting column in GridView but I've this error:

CS1502: The best overloaded method match for System.Data.DataView.DataView(System.Data.DataTable) has some invalid arguments

in this line why?: 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();

}
Hamamelis
  • 1,983
  • 8
  • 27
  • 41
  • Please allways use 'using' for all kind of connections! Because you can be shure your connection will everytime be colsed. More information about that you can find here: http://stackoverflow.com/questions/5243398/will-a-using-block-close-a-database-connection – brothers28 May 23 '14 at 09:59

2 Answers2

0

The error is due to this line

DataView sortedView = new DataView(GridViewBind());

The function GridViewBind() return type is void which is incorrect. It should return a DataTable.

If it returns DataTable then your code will work.

You need to modify your function as follow

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;

}
शेखर
  • 17,412
  • 13
  • 61
  • 117
0

Use DataView to sot the data.

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

}
Venki
  • 535
  • 2
  • 8
  • 21