【发布时间】:2014-03-24 17:31:01
【问题描述】:
你好朋友我的分页工作正常,但是当对任何列进行排序时,它会在第一页排序,但在下一页排序会丢失。
请任何人帮助我解决这个问题。
我的 .aspx 标记代码
<asp:TemplateField HeaderText="Actions" ItemStyle-Width="20%">
<ItemTemplate>
<a href='#' onclick="javascript:view_data(<%#Eval("Substance_ID")%>)"><span class="glyphicon glyphicon-eye-open"></span>View</a>
<a href='edit.aspx?id=<%#Eval("Substance_ID")%>'><span class="glyphicon glyphicon-pencil"></span>Edit</a>
<a href='delete.aspx?id=<%#Eval("Substance_ID")%>'><span class="glyphicon glyphicon-trash"></span>Delete</a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Substance_ID" HeaderText="Substance ID" SortExpression="Substance_ID" />
<asp:TemplateField HeaderText="CAS Number" ItemStyle-Width="10%" SortExpression="CAS_Number">
<ItemTemplate>
<%# Eval("CAS_Number").ToString().Trim()%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="EC Number" ItemStyle-Width="10%" SortExpression="EC_Number">
<ItemTemplate>
<%# Eval("EC_Number").ToString().Trim()%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Substance Name" SortExpression="Substance_Name">
<ItemTemplate>
<%#Eval("Substance_Name").ToString().Trim()%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Primary SG ID" ItemStyle-Width="10%" SortExpression="Primary_SG_ID">
<ItemTemplate>
<%#Eval("Primary_SG_ID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" ItemStyle-Width="5%" SortExpression="Status">
<ItemTemplate>
<%#Eval("Status")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle CssClass="my_pagination" />
<PagerSettings Mode="NumericFirstLast" FirstPageText="First" LastPageText="Last" PageButtonCount="10" />
<EmptyDataTemplate>No Data</EmptyDataTemplate>
</asp:GridView>
<asp:Label runat="server" ID="lblCount"></asp:Label>
还有我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGridViewData();
}
}
private void BindGridViewData()
{
List<Substance_Display> Substance_List = new List<Substance_Display>();
Substance_List = Substance_MasterAccessLayer.GetAllSubstances("Substance_ID");
Substance_Master.DataSource = Substance_List;
Substance_Master.DataBind();
lblCount.Text = "Total " + Substance_List.Count().ToString() + " Records found.";
}
protected void Substance_Master_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
Substance_Master.PageIndex = e.NewPageIndex;
Substance_Master.DataBind();
}
private void SortGridView(GridView Substance_Master, GridViewSortEventArgs e, out SortDirection sortDirection, out string sortField)
{
sortField = e.SortExpression;
sortDirection = e.SortDirection;
if (Substance_Master.Attributes["CurrentSortField"] != null & Substance_Master.Attributes["CurrentSortDirection"] != null)
{
if (sortField == Substance_Master.Attributes["CurrentSortField"])
{
if (Substance_Master.Attributes["CurrentSortDirection"] == "ASC")
{
sortDirection = SortDirection.Descending;
}
else
{
sortDirection = SortDirection.Ascending;
}
}
Substance_Master.Attributes["CurrentSortField"] = sortField;
Substance_Master.Attributes["CurrentSortDirection"] = (sortDirection == SortDirection.Ascending ? "ASC" : "DESC");
}
}
protected void Substance_Master_Sorting(object sender, GridViewSortEventArgs e)
{
SortDirection sortDirection = SortDirection.Ascending;
string sortField = string.Empty;
SortGridView(Substance_Master, e, out sortDirection, out sortField);
string strSortDirection = sortDirection == SortDirection.Ascending ? "ASC" : "DESC";
Substance_Master.DataSource = Substance_MasterAccessLayer.GetAllSubstances(e.SortExpression + " " + strSortDirection);
Substance_Master.DataBind();
}
【问题讨论】:
标签: c# asp.net sorting gridview paging