2016-11-14 11 views
0

私は並べ替えたいグリッドビューを持っています。私はいくつかのチュートリアルを読み、MSDNのページから直接私のコードの大部分をコピーしましたが、動作させることはできません。それはコンパイルされますが、グリッド列見出しをクリックすると何も起こりません。ASP.net Gridviewはソートされていません

マイHTML:

<asp:DataGrid runat="server" id="dgrMainGrid" CssClass="c_mainGrid" 
AutoGenerateColumns="true" AllowSorting="true" 
OnSorting="TaskGridView_Sorting" /> 

私の分離コード:

protected void TaskGridView_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    //Retrieve the table from the session object. 
    DataTable dt = Session["Grid"] as DataTable; 

    if (dt != null) 
    { 
     dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression); 
     dgrMainGrid.DataSource = dt; 
     dgrMainGrid.DataBind(); 
    } 
} 

private string GetSortDirection(string column) 
{ 
    // By default, set the sort direction to ascending. 
    string sortDirection = "ASC"; 

    // Retrieve the last column that was sorted. 
    string sortExpression = ViewState["SortExpression"] as string; 

    if (sortExpression != null) 
    { 
     // Check if the same column is being sorted. 
     // Otherwise, the default value can be returned. 
     if (sortExpression == column) 
     { 
      string lastDirection = ViewState["SortDirection"] as string; 
      if ((lastDirection != null) && (lastDirection == "ASC")) 
      { 
       sortDirection = "DESC"; 
      } 
     } 
    } 
    return sortDirection; 
} 

それが正常に動作し、ページの読み込み、上で私のグリッドのためのソースですので、私は、私のセッション変数の作品にデータテーブルを知っています。もう1つ重要なのは、このグリッドビューは更新パネルにあります。

私が言ったように、これのほとんどはMSDNのページからコピーされています。誰かが私の間違いを見ることができますか?ありがとう。

+0

AutoPostBackプロパティにはどのような値がありますか? – DanielVorph

+0

私は何も持っていませんでしたが、私は真と偽の両方を試みましたが、それはまだ動作しません。 – buckshot

答えて

1

DataGridを使用していますが、GridViewではありません。 Microsoftによれば、DataGridにはOnSortingイベントがありませんが、OnSortCommandイベントがあります。それを使用するか、GridViewコントロールに切り替えるどちらかそれが必要として動作しません

、コードで

protected void dgrMainGrid_SortCommand(object source, DataGridSortCommandEventArgs e) 
{ 
    DataTable dt = Session["Grid"] as DataTable; 

    if (dt != null) 
    { 
     dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression); 
     dgrMainGrid.DataSource = dt; 
     dgrMainGrid.DataBind(); 
    } 
} 

そして、あなたのGetSortDirection

後ろ(推奨)。 this exampleを参照してください。

+0

VDWWD、私は1​​時間、Web要素の問題を見ずに(私は両方のトラブルシューティング中にそれらを試していた)見ていた。どうもありがとうございます。私は心理的に今あなたにビールを買っています。 – buckshot

関連する問題