ASP.NETリピータを使用して並べ替えを実行する方法に関するアドバイスを受けています。C#ASP.NETリピータ並べ替え
基本的には、ヘッダーフィールドをクリックして繰り返しデータを並べ替えることができます。ここで
は
<asp:PlaceHolder runat="server" ID="phOrders">
<table>
<thead>
<tr>
<th>Date</th>
<th><asp:LinkButton ID="lnkOrderBy" runat="server" Text="Order Number" OnClick="lnkOrderBy_Click"></asp:LinkButton></th>
<th><asp:linkButton ID="lnkOrderByItem" runat="server" Text="Item" OnClick="lnkOrderByIte_Click"></asp:linkButton></th>
<th>Size</th>
<th>QTY</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="rprOrders" runat="server" >
<ItemTemplate>
<tr>
<td><strong><%# Eval("OrderDate") %></strong></td>
<td><%# Eval("OrderItemSKUName") %></td>
<td><%# Eval("OrderItemSKUID") %></td>
<td></td>
<td><%# Eval("OrderItemUnitCount") %></td>
<td><strong><%# Eval("OrderItemStatus") %></strong></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
<div class="track-footer"></div>
</asp:PlaceHolder>
が、私はViewStateにデータを格納し、ソート実行すべき私のリピーターですか?または、クリックイベントごとにデータベースを照会しますか?ここで
はリピーターに
private void PopulateOrders()
{
CustomerInfo ki = CustomerInfoProvider.GetCustomerInfoByUserID(CooneenHelper.GetUserImpersonisationID());
int nKustomerID = ki.CustomerID;
DataTable dts = new DataTable();
dts.Columns.Add("OrderDate", typeof(string));
dts.Columns.Add("OrderItemSKUName", typeof(string));
dts.Columns.Add("OrderItemSKUID", typeof(string));
dts.Columns.Add("OrderItemStatus", typeof(string));
dts.Columns.Add("OrderItemUnitCount", typeof(string));
QueryDataParameters qdp = new QueryDataParameters();
qdp.Add("@CustomerID", nKustomerID);
DataSet ds = gc.ExecuteQuery("CN_OrderList", qdp, QueryTypeEnum.StoredProcedure, true);
foreach (DataRow dr in ds.Tables[0].Rows)
{
DataRow drNew = dts.NewRow();
drNew["OrderDate"] = ValidationHelper.GetDateTime(dr["OrderDate"], DateTime.Now).ToShortDateString();
drNew["OrderItemSKUName"] = dr["OrderItemSKUName"].ToString();
drNew["OrderItemSKUID"] = dr["OrderItemSKUID"].ToString();
drNew["OrderItemStatus"] = dr["OrderItemStatus"].ToString();
drNew["OrderItemUnitCount"] = dr["OrderItemUnitCount"].ToString();
dts.Rows.Add(drNew);
}
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dts.DefaultView;
DataView view = dts.DefaultView;
//allow paging, set page size, and current page
pds.AllowPaging = true;
pds.PageSize = PerPage;
pds.CurrentPageIndex = CurrentPage;
//show # of current page in label
if (pds.PageCount > 1) litResults.Text += " - Showing page " + (CurrentPage + 1).ToString() + " of " + pds.PageCount.ToString();
//disable prev/next buttons on the first/last pages
btnPrev.Enabled = !pds.IsFirstPage;
btnNext.Enabled = !pds.IsLastPage;
rprOrders.Visible = true;
rprOrders.DataSource = pds;
rprOrders.DataBind();
}
これは古いasp.netですか?クライアント側のコードと統合するのはひどいですか?私。 mvcじゃない?現代技術(ASP.NET MVC)への移行はオプションですか?それははるかに簡単になり、あなたはクライアントのことをすることができます。 – TomTom
@TomTom MVCはオプションではありません:( – Kevin
これを見てください:http://www.aspdotnet-suresh.com/2014/10/csharp-sorting-columns-in-repeater-control-in-aspnet.html – Zaki