2012-01-22 120 views
5

私はAsp.netを初めて使い、現在GridViewsを使っています。私はこのサイトの周りを見てきました。他の人は、列ヘッダーにソート矢印を追加する方法のヒントを見てきました。デフォルトのソート矢印をGridViewに追加

設定し、これらのGridViewのプロパティ:

は、これまでのところ、私はこれをやった

SortedAscendingHeaderStyle-CssClass="sortasc" 
SortedDescendingHeaderStyle-CssClass="sortdesc" 

そして、私のCSSは、このあります。これは、後の画像を表示するために素晴らしい作品

th.sortasc a 
{ 
    display:block; padding:0 4px 0 15px; 
    background:url("images/icons/ascArrow.png") no-repeat; 
} 

th.sortdesc a 
{ 
    display:block; padding:0 4px 0 15px; 
    background:url("images/icons/descArrow.png") no-repeat; 
} 

ユーザーがヘッダーをクリックし、列が並べ替えられます。

私が今問題にしているのは、デフォルトで画像を表示して、ユーザーがクリックして並べ替えることができることを知ることです。これを達成する方法はありますか?

答えて

10

あなたはRowCreatedイベントで、私は通常、このよう

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     foreach (TableCell tc in e.Row.Cells) 
     { 
      if (tc.HasControls()) 
      { 
       // search for the header link 
       LinkButton lnk = (LinkButton)tc.Controls[0]; 
       if (lnk != null && GridView1.SortExpression == lnk.CommandArgument) 
       { 
        // inizialize a new image 
        System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); 
        // setting the dynamically URL of the image 
        img.ImageUrl = "~/img/ico_" + (GridView1.SortDirection == SortDirection.Ascending ? "asc" : "desc") + ".gif"; 
        // adding a space and the image to the header link 
        tc.Controls.Add(new LiteralControl(" ")); 
        tc.Controls.Add(img); 

       } 
      } 
     } 
    } 
} 

が、それはまた、カラム

のソート順を昇順と降順に画像を切り替え、それを行うこのような何かを gridview列の振る舞いをソートするための矢印を表示することができます

何のコードが実際にやっていることは、それは(フレームワークがSortExpressionプロパティが設定されている場合にのみ、それが作成されます)LinkButtonを検索するGridViewのヘッダーをループ です。その後、見つかったLinkButtonがソートされたフィールドの場合、それは出力に像を示し、それはすべての

AnswerSource

+0

だあなたは、実際にif文の中にIMGの初期化を移動し、if文を組み合わせることができます。 'If​​(lnk!= null && GridView1.SortExpression == lnk.CommandArgument){...' – Patrick

+1

@パトリックは改善を提案するための編集と感謝を参照してください – Devjosh

+0

ありがとうございました!私はこれを試してみる。私はいくつかの質問があります:これの一部は、私はVBの代わりにC#のために変更する必要がありますか?また、私はまだコントロールのためのイベントで働いていない、私はこれにかなり新しいです。 gridviewのrowcreatedイベントを編集するためのどこのヒント? – Cineno

関連する問題