データテーブルからバインドされたListViewがあり、時系列の項目のいくつかのページが含まれています。
昇順と降順で並べ替えられるようにしたいと思います。
私の<layouttemplate>
中には次のものがあります:
<asp:linkbutton runat="server" id="SortbyYear" commandname="Sort" commandargument="Year">Year</asp:linkbutton>
それをクリックすると、pageRequestManagerからonsortingが処理されないというエラーが表示されます。
だから私は私のに以下を追加しました<asp:listview ... >
:
onsorting="HistoryList_Sorting"
並べ替えを機能させるために、実際にそのメソッドをコードビハインドに何を入れますか?「Year」列を昇順と降順の間で切り替えようとしています。
protected void HistoryList_Sorting(object sender, ListviewSortEventArgs e)
{
// WHAT GOES HERE???
}
アップデート:
以下は、ASPXページにあるものです。
<asp:listview id="HistoryList" runat="server" convertemptystringtonull="False" onlayoutcreated="HistoryList_LayoutCreated" ondatabound="HistoryList_DataBound" onsorting="HistoryList_Sorting" >
<layouttemplate>
<table>
<tr>
<th><asp:linkbutton runat="server" id="SortByYear" commandname="Sort" commandargument="Year"><asp:literal runat="server" id="Year" /></asp:linkbutton></th>
<th><asp:literal runat="server" id="Event" /></th>
</tr>
<tr id="ItemPlaceholder" runat="server"></tr>
</table>
</layouttemplate>
<itemtemplate>
<tr class="row">
<td class="history-year-column"><%# Eval("Year") %></td>
<td><%# Eval("Description") %></td>
</tr>
</itemtemplate>
<alternatingitemtemplate>
<tr class="row-alternate">
<td class="history-year-column"><%# Eval("Year") %></td>
<td><%# Eval("Description") %></td>
</tr>
</alternatingitemtemplate>
</asp:listview>
CSページには次のようなものがあります。
#region " Declare: Shared Classes "
private Localization localizeSite = new Localization();
private DataXML xmlData = new DataXML();
public DataTable HistoryDataTable { get; set; }
#endregion
#region " Page: PreInit "
private void Page_PreInit(object sender, System.EventArgs e)
{
Page.MasterPageFile = localizeSite.LoadMasterPage(Page.Master.AppRelativeVirtualPath);
}
#endregion
#region " Page: Load "
protected void Page_Load(object sender, System.EventArgs e)
{
Edition edition = new Edition();
ContentTracking.Text = edition.GetEdition(Page.AppRelativeVirtualPath);
//// LOCALIZE THE WEB SITE CONTENT
Heading.Text = localizeSite.LocalizeText(Page, "Heading.Text");
Body.Text = localizeSite.LocalizeText(Page, "Body.Text");
AdNetworkTracking.Text = localizeSite.LocalizeText(Page, "AdNetworkTracking.Text");
}
#endregion
#region " Handle: OnLayoutCreated "
protected void HistoryList_LayoutCreated(object sender, System.EventArgs e)
{
((Literal)HistoryList.FindControl("Year")).Text = localizeSite.LocalizeText(Page, "Year.Text");
((Literal)HistoryList.FindControl("Event")).Text = localizeSite.LocalizeText(Page, "Event.Text");
}
#endregion
#region " Handle: Sorting "
public String SortExpression
{
get
{
return (string)ViewState["SortExpression"];
}
set
{
ViewState["SortExpression"] = value;
}
}
protected void HistoryList_Sorting(object sender, ListViewSortEventArgs e)
{
String sortExpression = e.SortExpression + " " + e.SortDirection.ToString();
this.SortExpression = sortExpression.Replace("Ascending", "ASC").Replace("Descending", "DESC");
}
#endregion
#region " Handle: Paging "
protected void HistoryList_DataBound(object sender, EventArgs e)
{
HistoryPager.Visible = (HistoryPager.PageSize < HistoryPager.TotalRowCount);
}
protected void HistoryPager_PreRender(object sender, EventArgs e)
{
if (HistoryDataTable == null)
{
HistoryDataTable = xmlData.GetDataTable(Server.MapPath("~/App_Data/history.xml"), "Event");
}
if (!String.IsNullOrEmpty(SortExpression))
{
HistoryDataTable.DefaultView.Sort = SortExpression;
}
HistoryList.DataSource = HistoryDataTable;
HistoryList.DataBind();
}
#endregion
並べ替えはまだ機能していません。