Greetings experts,
As you can see from the codes below, most of it comes from the great resources from the parent forum of this great forum - aspsnippets.com
That forum is probably the best forum on the planet because it has incredible resources and the codes are ALWAAYS accurate.
Thank you
The code I have below has sorting which works great.
However, I would like to integrate sorting arrow in such that users can see default sort with down arrow on page load.
Unfortunately, I have not found one on this forum or on aspsnippets.com and have tried several that I found online elsewhere but none worked for me.
Your assistance as always is greatly appreciated.
<asp:GridView ID="grvSpeakers" DataKeyNames="SpeakerID" runat="server"
AutoGenerateColumns="false" CellPadding="3" CssClass="Gridview gridheader" ShowFooter="true" OnRowCancelingEdit="gvDetails_RowCancelingEdit"
OnRowDeleting="gvDetails_RowDeleting" OnRowEditing="gvDetails_RowEditing"
OnRowUpdating="gvDetails_RowUpdating"
OnRowCommand="gvDetails_RowCommand" OnSorting="OnSorting" AllowSorting="true" OnRowDataBound="gvDetails_RowDataBound" OnPageIndexChanging="OnPageIndexChanging" PageSize="10" AllowPaging="true" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
<Columns>
<asp:TemplateField HeaderText="Speaker's Name" SortExpression="SpeakerName">
<EditItemTemplate>
<asp:TextBox ID="txtSpeakerName" runat="server" Width="150px" Text='<%#Eval("SpeakerName") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblitemUsr" runat="server" Text='<%#Eval("SpeakerName") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrSpeakerName" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvusername" runat="server" ControlToValidate="txtftrSpeakerName" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ministry's Name" SortExpression="MinistryName">
<EditItemTemplate>
<asp:TextBox ID="txtministryname" Width="150px" runat="server" Text='<%#Eval("MinistryName") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbltministryname" runat="server" Text='<%#Eval("MinistryName") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrtministryname" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvtministryname" runat="server" ControlToValidate="txtftrtministryname" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<EditItemTemplate>
<asp:TextBox ID="txtEmail" runat="server" Width="150px" Text='<%#Eval("Email") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblEmail" runat="server" Text='<%#Eval("Email") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrEmail" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvdesignation" runat="server" ControlToValidate="txtftrEmail" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date Added" SortExpression="dateAdded">
<EditItemTemplate>
<asp:TextBox ID="txtdateAdded" runat="server" Width="150px" CssClass="clientDate" Text='<%#Eval("dateAdded", "{0:MM/dd/yyyy}") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbldateAdded" runat="server" Text='<%#Eval("dateAdded", "{0:MM/dd/yyyy}") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrdateAdded" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvdateAdded" runat="server" ControlToValidate="txtftrdateAdded" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Client Name" SortExpression="ClientName">
<EditItemTemplate>
<asp:TextBox ID="txtclientName" runat="server" Width="150px" Text='<%#Eval("ClientName") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblclientName" runat="server" Text='<%#Eval("ClientName") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrclientName" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvdclientName" runat="server" ControlToValidate="txtftrclientName" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Website URL">
<EditItemTemplate>
<asp:TextBox ID="txtWebsiteURL" Width="150px" runat="server" Text='<%#Eval("WebsiteURL") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:HyperLink runat="server" ID="rfvWebsiteURL" NavigateUrl='<%# Eval("WebsiteURL", "~/{0}") %>' Text='<%#Eval("WebsiteURL") %>' />
<%--<asp:Label ID="lblWebsiteURL" runat="server" Text='<%#Eval("WebsiteURL") %>'/>--%>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtftrWebsiteURL" Width="150px" runat="server" />
<asp:RequiredFieldValidator ID="rfvWebsiteURL" runat="server" ControlToValidate="txtftrWebsiteURL" Text="*" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit / Delete">
<HeaderStyle Width="70" />
<ItemStyle Width="70" />
<EditItemTemplate>
<asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="~/Images/check.png" ToolTip="Update" Height="20px" Width="20px" />
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="~/Images/cancel.png" ToolTip="Cancel" Height="20px" Width="20px" />
</EditItemTemplate>
<ItemTemplate>
<asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="~/Images/edit1.gif" ToolTip="Edit" Height="20px" Width="20px" />
<asp:ImageButton ID="imgbtnDelete" CommandName="Delete" Text="Delete" runat="server" ImageUrl="~/Images/delete.gif" ToolTip="Click Click to delete" OnClientClick="return confirm('Are you sure you want to delete this Speaker information?');" AlternateText="Delete" Height="20px" Width="20px" />
</ItemTemplate>
<FooterTemplate>
<asp:ImageButton ID="imgbtnAdd" runat="server" ImageUrl="~/Images/add.png" CommandName="AddNew" Width="20px" Height="20px" ToolTip="Add new User" ValidationGroup="speakervalidaiton" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
<RowStyle BackColor="#BDBDBD" ForeColor="#3C3C3C" />
<FooterStyle BackColor="#E0E0E0" ForeColor="#3C3C3C" />
<PagerStyle BackColor="#2C3539" ForeColor="#FFFAF8" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#BDBDBD" Font-Bold="True" ForeColor="White" />
<HeaderStyle Font-Bold="True" BorderColor="#000" ForeColor="#FFFAF8" />
<AlternatingRowStyle BackColor="#E0E0E0" />
</asp:GridView>
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
SqlDataAdapter ad = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
protected void Page_PreInit(object sender, EventArgs e)
{
grvSpeakers.Font.Size = FontUnit.Small;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillClientGrid();
FillSermonGrid();
FillLogGrid();
ScriptManager.GetCurrent(this).RegisterPostBackControl(spExport);
ScriptManager.GetCurrent(this).RegisterPostBackControl(btnSpToPDF);
}
}
protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
{
grvSpeakers.PageIndex = e.NewPageIndex;
this.FillClientGrid();
}
private int GetIndex(string SortExp)
{
int i = 0;
foreach (DataControlField c in grvSpeakers.Columns)
{
if (c.SortExpression == SortExp)
return i;
else
i += 1;
}
return i;
}
protected void OnSorting(object sender, GridViewSortEventArgs e)
{
this.FillClientGrid(e.SortExpression);
}
private string SortDirection
{
get { return ViewState["SortDirection"] != null ? ViewState["SortDirection"].ToString() : "ASC"; }
set { ViewState["SortDirection"] = value; }
}
private void FillClientGrid(string sortExpression = null)
{
string constr = ConfigurationManager.AppSettings["XPhiasResultString"].ToString();
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Speakers"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
if (sortExpression != null)
{
DataView dv = dt.AsDataView();
this.SortDirection = this.SortDirection == "ASC" ? "DESC" : "ASC";
dv.Sort = sortExpression + " " + this.SortDirection;
grvSpeakers.DataSource = dv;
}
else
{
grvSpeakers.DataSource = dt;
}
grvSpeakers.DataBind();
}
}
}
}
}