MarkUp:
<asp:TextBox ID="txtBulletinName" runat="server" width="100px">asp:TextBox>asp:Button CssClass="SubmitButton" ID="btnView" runat="server" Text="View List" OnClick="btnView_Click" />
<asp:GridView BorderColor="#990000" ID="gvEmailList" runat="server" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="true" PageSize="5" OnPageIndexChanging="gvEmailList_PageIndexChanging" OnSorting="gvEmailList_Sorting">
<Columns>
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="CustomerId" HeaderText="Customer ID" SortExpression="CustomerId" />
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="FirstName" HeaderText="First Name" SortExpression="FirstName" />
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="LastName" HeaderText="Last Name" SortExpression="LastName" />
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="EmailAddress" HeaderText="Email Address"/
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="BulletinName" HeaderText="Bulletin Name"/>
<asp:BoundField HeaderStyle-CssClass="HeaderText" ItemStyle-CssClass="ItemText" DataField="EmailType" HeaderText="Email Type" />
</Columns>
Codebehind:
void btnView_Click(object sender, EventArgs e)
{
PopulateGridView();
}
public void PopulateGridView()
{
try
{
SqlConnection sqlCon = new SqlConnection(strOnyxConnectionString);
SqlCommand sqlCmd = new SqlCommand("SProcName", sqlCon);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add("@Param1", SqlDbType.VarChar);
sqlCmd.Parameters["@Param1"].Value = txtBulletinName.Text;
EmailListDS = new DataSet();
SqlDataAdapter emailAdapter = new SqlDataAdapter(sqlCmd);
emailAdapter.Fill(EmailListDS, "Tbl_EmailList");
if (EmailListDS.Tables["Tbl_EmailList"] != null )
{
DataTable dt = EmailListDS.Tables["Tbl_EmailList"] as DataTable;
if (dt != null)
{
gvEmailList.Visible = true;
lblPaging.Visible = true;
DataView dv = new DataView(dt);
dv.Sort = "LastName ASC";
gvEmailList.DataSource = dv;
gvEmailList.DataBind();
lblPaging.Text = "You are Viewing Page " + Convert.ToInt32(gvEmailList.PageIndex + 1) + " of " + gvEmailList.PageCount + " for " + drpEmailFormat.SelectedItem.Text;
}
}
else
{
gvEmailList.Visible = false;
lblPaging.Visible = false;
lblMessage.Text = "No Records found";
}
}
catch (Exception Ex)
{
lblMessage.Text = Ex.ToString();
}
}
//Method that sorts data
protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
{
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
if (GridViewSortExpression != string.Empty)
{
if (isPageIndexChanging)
{
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);
}
else
{
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());
}
}
else
{
dataView.Sort = string.Format("{0} {1}", "LastName", "ASC");
}
return dataView;
}
else
{
return new DataView();
}
}
private string GridViewSortDirection
{
get { return ViewState["SortDirection"] as string ?? "ASC"; }
set { ViewState["SortDirection"] = value; }
}
private string GetSortDirection()
{
switch (GridViewSortDirection)
{
case "ASC":
GridViewSortDirection = "DESC";
break;
case "DESC":
GridViewSortDirection = "ASC";
break;
}
return GridViewSortDirection;
}
private string GridViewSortExpression
{
get { return ViewState["SortExpression"] as string ?? string.Empty; }
set { ViewState["SortExpression"] = value; }
}
protected void gvEmailList_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
GridViewSortExpression = e.SortExpression;
int pageIndex = gvEmailList.PageIndex;
gvEmailList.DataSource = SortDataTable(EmailListDS.Tables[0] as DataTable, false);
gvEmailList.DataBind();
gvEmailList.PageIndex = pageIndex;
}
catch (Exception Ex)
{
lblMessage.Text = Ex.ToString();
}
}
protected void gvEmailList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvEmailList.DataSource = SortDataTable(EmailListDS.Tables[0] as DataTable, true);
gvEmailList.PageIndex = e.NewPageIndex;
gvEmailList.DataBind();
lblPaging.Text = "You are Viewing Page " + Convert.ToInt32(gvEmailList.PageIndex + 1) + " of " + gvEmailList.PageCount + " for " + drpEmailFormat.SelectedItem.Text;
}