Сортировка списка по заголовкам столбцов в LayoutTemplate
Я могу отсортировать базовое представление списка с помощью 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>
Пример привязки данных:
<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();
}
Оба примера кода заполняют представление списка, но второй пример привязки данных не работает для сортировки. В первом примере сортировка работает только с добавленным asp: LinkButton в LayoutTemplate, добавляющим CommandName = "sort" и устанавливающим CommandArugment = "ColumnName", но во втором примере она не работает.
Может кто-нибудь объяснить, почему и как заставить работать сортировку, используя код метода DataBind?
Спасибо!