我能夠使用ASP排序基本列表視圖
排序列表視圖:SqlDataSource和設置列表視圖屬性的DataSourceID通過將其指向ASP :SqlDataSource標識。我在排序時沒有使用asp:SqlDataSource,而只是從後面的代碼中獲取DataBinding。
的SqlDataSource示例:
<asp:ListView ID="ContactsListView" DataSourceID="ContactsDataSource" runat="server">
<LayoutTemplate>
<table width="640px" runat="server">
<tr class="header" align="center" runat="server">
<td>
<asp:LinkButton runat="server" ID="SortByFirstNameButton" CommandName="Sort" Text="First Name" CommandArgument="FirstName" />
</LayoutTemplate>
....
</asp:ListView>
<asp:SqlDataSource ID="ContactsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:MainConnString %>"
SelectCommand="SELECT * FROM TableName">
</asp:SqlDataSource>
的DataBind實施例:
<asp:ListView ID="ContactsListView" DataSourceID="ContactsDataSource" runat="server">
<LayoutTemplate>
<table width="640px" runat="server">
<tr class="header" align="center" runat="server">
<td>
<asp:LinkButton runat="server" ID="SortByFirstNameButton" CommandName="Sort" Text="First Name" CommandArgument="FirstName" />
</LayoutTemplate>
....
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
String SQL = "SELECT * FROM Customer";
SqlDataAdapter da= new SqlDataAdapter(SQL, ConnStr);
DataSet ds = new DataSet();
da.Fill(ds);
ContactsListView.DataSource = ds.Tables[0];
ContactsListView.DataBind();
}
兩個代碼樣品填充列表視圖,但第二實施例的數據綁定用於排序不起作用。在第一個例子中,排序只需要在LayoutTemplate中添加asp:LinkButton,添加CommandName =「sort」並設置CommandArugment =「ColumnName」,但它不適用於第二個示例。
任何人都可以請解釋爲什麼以及如何使用DataBind方法後面的代碼進行排序工作嗎?
謝謝!
有沒有在你的代碼來處理排序 - 你是怎麼嘗試導致了問題?您可以爲SQL查詢添加一個ORDER BY子句,或者添加一些代碼隱藏功能將其排序在數據綁定上 - 這取決於您想實現的目標;讓我們知道。 – Widor
這兩個示例都會填充列表視圖,但在第一個示例中,我不必添加任何其他代碼即可在單擊列標題時使排序工作。 – PsychoDUCK
我想出了我的解決方案,並將在今晚晚些時候發佈。我的聲譽不會讓我發佈,直到8小時後。 基本上如下面的答案建議,我必須創建我自己的OnSort事件處理程序,重新查詢數據庫到DataTable中,對DataTable進行排序然後將其綁定回ListView。 如果有一種方式可以不必再打電話給數據庫,請告訴我。 – PsychoDUCK