チケットデータをロードするグリッドビューがあります。ユーザーの操作に応じて、このグリッドビューはさまざまな sqldatasources を読み込み、データを再表示します。
グリッドビューのマークアップは次のとおりです。
<X:GridViewX ID="gvxTaskList" runat="server"
AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
Width="100%" Height="100%" CssClass="tablestyle"
OnRowCreated="gvxTaskList_RowCreated"
OnPageIndexChanging="gvxTaskList_PageIndexChanging"
OnSorting="gvxTaskList_Sorting">
だから、私には2つの問題があります。
まず、並べ替えイベントがまったく機能しません。データテーブルで null を取得します。コード:
protected void gvxTaskList_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
System.Data.DataTable dataTable = gvxTaskList.DataSource as
System.Data.DataTable;
if (dataTable != null)
{
System.Data.DataView dataView = new System.Data.DataView(dataTable);
dataView.Sort = e.SortExpression + " " +
ConvertSortDirectionToSql(e.SortDirection);
gvxTaskList.DataSource = dataView;
gvxTaskList.DataBind();
}
}
catch (Exception ex)
{
}
}
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
try
{
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
}
catch (Exception ex)
{
}
return newSortDirection;
}
if (dataTable != null) で失敗するのは、それが null であるためです。
2 番目の問題は、ページングです。グリッドビューを最初にロードするとき、ページングは問題ありません。2 ページ分のデータ オンロードがあります。エラーなしで一日中ページを前後に移動できます。問題は、データソースを変更して 3 ページのデータを戻す場合です。最初のページからすぐに 3 ページをクリックしようとすると、前のデータ (2 ページ分) がリロードされます。どんな助けでも大歓迎です。