I have just written my first page with a datagrid that allows ASC and
DESC sorting. But I want to know how I can get it so that the header
shows the type of sorting that has just been done on it (i.e. Column1
DESC). Also I would need to be able to remove this from the last column
that was sorted on so that it now says just Column2.
<%@ Page Language="C#" ContentType="te xt/html"
ResponseEncodin g="iso-8859-1" %>
<%@ Import Namespace="Syst em" %>
<%@ Import Namespace="Syst em.Configuratio n" %>
<%@ Import Namespace="Syst em.Web.UI" %>
<%@ Import Namespace="Syst em.Web.UI.WebCo ntrols" %>
<%@ Import Namespace="Syst em.Data" %>
<%@ Import Namespace="Syst em.Data.SqlClie nt" %>
<script language="C#" runat="server">
private void Page_Load()
{
if (!(Page.IsPostB ack))
{
ViewState["LastSortOr der"]="DESC";
ViewState["LastSortColumn "]= "LogNum";
Session["CallLog"] = "SELECT * FROM CALL_LOG WHERE LogNum BETWEEN
'63493' AND '63545' ORDER BY Lognum DESC";
BindData(Conver t.ToString(Sess ion["CallLog"]));
}
else
{
string lastSortColumn= (string)ViewSta te["LastSortColumn "];
string lastSortOrder= (string)ViewSta te["LastSortOr der"];
}
}
//cache can't be used as is Application level
//this code keeps data up to date on Session level (user may enter
different ODN etc)
void BindData(string strCallLog)
{
SqlConnection objConnection = new
SqlConnection(C onfigurationSet tings.AppSettin gs["strConnectTran sitTest"]
);
SqlDataAdapter objDataAdapter = new SqlDataAdapter( strCallLog,
objConnection);
DataSet objDataSet = new DataSet();
DataTable objDataTable = new DataTable();
objDataAdapter. Fill(objDataSet , "tblCallLog ");
Session["LogData"] = objDataSet.Tabl es["tblCallLog "].DefaultView;
dgLog.DataSourc e = Session["LogData"];
dgLog.DataBind( );
}
void dgLog_Paged(obj ect sender, DataGridPageCha ngedEventArgs e)
{
dgLog.CurrentPa geIndex = e.NewPageIndex;
BindData(Conver t.ToString(Sess ion["CallLog"]));
}
void dgLog_Sort(obje ct sender, DataGridSortCom mandEventArgs e)
{
string newSortColumn= e.SortExpressio n.ToString();
string newSortOrder="A SC"; // default
string lastSortColumn= (string)ViewSta te["LastSortColumn "];
string lastSortOrder= (string)ViewSta te["LastSortOr der"];
if (newSortColumn. Equals(lastSort Column) &&
lastSortOrder.E quals("ASC"))
{
newSortOrder= "DESC";
} // else {newSortOrder=" ASC";}
ViewState["LastSortOr der"]= newSortOrder;
ViewState["LastSortColumn "]= newSortColumn;
dgLog.CurrentPa geIndex= 0; // goto first page
Session["CallLog"] = "SELECT * FROM CALL_LOG WHERE LogNum BETWEEN
'63493' AND '63545' ORDER BY " + e.SortExpressio n + " " + newSortOrder;
BindData(Conver t.ToString(Sess ion["CallLog"]));
}
</script>
<html>
<head>
<title>Untitl ed Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form ID="Log" runat="server">
<div style="vertical-align
top;height:400p x;width:570px;o verflow:scroll; ">
<asp:DataGrid id="dgLog" runat="server"
CellPadding="3"
Font-Name="arial"
Font-Size="8pt"
HeaderStyle-ForeColor="#000 15E"
HeaderStyle-BackColor="#dcd cdc"
HeaderStyle-Font-Bold="true"
BorderColor="bl ack"
BackColor="#009 9CC"
forecolor="#FFF FFF"
AllowPaging="tr ue"
PageSize="10"
OnPageIndexChan ged="dgLog_Page d"
AutoGenerateCol umns="False"
AllowSorting="t rue"
OnSortCommand=" dgLog_Sort">
<Columns>
<asp:BoundColum n DataField="LogN um" HeaderText="Log Num"
SortExpression= "LogNum" />
<asp:BoundColum n DataField="Ince ptTime"
HeaderText="Inc eptTime" SortExpression= "InceptTime " />
<asp:BoundColum n DataField="InSp an" HeaderText="InS pan" />
<asp:BoundColum n DataField="InCh an" HeaderText="InC han"
SortExpression= "InChan" />
<asp:BoundColum n DataField="OutS pan" HeaderText="Out Span"
SortExpression= "OutSpan" />
<asp:BoundColum n DataField="OutC han" HeaderText="Out Chan" />
</Columns>
<PagerStyle
Mode="NumericPa ges"
HorizontalAlign ="Left"
ForeColor="#000 15E"
BackColor="#dcd cdc"
NextPageText="N ext"
PrevPageText="P revious" />
</asp:DataGrid>
</div>
</form>
</body>
</html>
Any help would be really appreciated.
Cheers,
Mike
*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!