Monday, January 11, 2010

Gridview Sorting Asp.Net 2.0 and using up and down arrows

Deafault.aspx


<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" onpageindexchanging="GridView1_PageIndexChanging"
onrowcreated="GridView1_RowCreated" onsorting="GridView1_Sorting">
<Columns>
<asp:BoundField DataField ="id" HeaderText ="id" SortExpression ="id" />
<asp:BoundField DataField ="name" HeaderText ="name" SortExpression ="name" />
<asp:BoundField DataField ="fathername" HeaderText ="fathername" SortExpression ="fathername" />
<asp:BoundField DataField ="designation" HeaderText ="designation" SortExpression ="designation" />
<asp:BoundField DataField ="address" HeaderText ="address" SortExpression ="address" />
</Columns>
</asp:GridView>

Default.aspx.cs



protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["SortOrder"] = "DESC";
BindDataToGrid();
}
}

public DataSet BindDataToGrid()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("select * from employee", con); SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
return ds;
}
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.Header) {
int sortColumnIndex = GetSortColumnIndex();
if (sortColumnIndex != -1) {
AddSortImage(sortColumnIndex, e.Row);
}
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = FillGrid();
GridView1.DataBind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) {
ViewState["sortExpression"] = e.SortExpression;
if (ViewState["SortOrder"] != null) {
if (ViewState["SortOrder"].ToString().ToUpper() == "ASC")
{
ViewState["SortOrder"] = "DESC";
ViewState["SortDirection"] = SortDirection.Descending;
}
else
{
ViewState["SortOrder"] = "ASC";
ViewState["SortDirection"] = SortDirection.Ascending;
}
}
GridView1.PageIndex = 0;
GridView1.DataSource = FillGrid();
GridView1.DataBind();

}
private DataView FillGrid()
{
DataSet ds = new DataSet();
DataView dv = new DataView();
ds=BindDataToGrid();
if (ViewState["sortExpression"] != null)
{
dv = new DataView(ds.Tables[0]);
dv.Sort = (string)ViewState["sortExpression"] + " "
+ ViewState["SortOrder"];
}
else
dv = ds.Tables[0].DefaultView;
return dv;
}
private void AddSortImage(int columnIndex, GridViewRow headerRow)
{
Image sortImage = new Image();
if (GridViewSortDirection == SortDirection.Ascending)
{
sortImage.ImageUrl = "~/images/up.gif";
sortImage.AlternateText = "Ascending Order";
}
else {
sortImage.ImageUrl = "~/images/down.gif";
sortImage.AlternateText = "Descending Order";
}
headerRow.Cells[columnIndex].Controls.Add(sortImage);
} private int GetSortColumnIndex() {
foreach (DataControlField field in GridView1.Columns)
{
if (field.SortExpression ==
(string)ViewState["sortExpr"])
{
return GridView1.Columns.IndexOf(field);
}
}
return -1;
}
private SortDirection GridViewSortDirection
{ get
{
if (ViewState["SortDirection"] == null)
ViewState["SortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["SortDirection"];
}
set
{
ViewState["SortDirection"] = value;
}
}

No comments:

Post a Comment