2011-01-04 8 views
2

私はGridviewを拡張しています。今、私はこれを持っている: alt textASP.NET GridView |ヘッダーの正確なコピーのようなフッターを作成するには? (視覚と方法)

私の目標は、私はこの(ペイント)を得るまでそれを変更することです: alt text

私はそれが「OnRowCreated」を通して行うことができると思います。しかし、どのように手掛かりがありません。

protected override void OnRowCreated(GridViewRowEventArgs e) 
    { 
     base.OnRowCreated(e); 

     if (e.Row.RowType == DataControlRowType.Footer) 
     { 


     } 
    } 

誰でも私にこのことを教えてもらえますか?

よろしく

答えて

1

:RowCreatedEventイベントで ザ・チェックを行いますヘッダ(Vb.Net)と同じテキスト:

Private Sub MyGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
     If e.Row.RowType = DataControlRowType.Footer Then 
      Dim header As GridViewRow = DirectCast(sender, GridView).HeaderRow 
      For i As Int32 = 0 To header.Cells.Count - 1 
       Dim headerCell As TableCell = header.Cells(i) 
       Dim footerCell As TableCell = e.Row.Cells(i) 
       footerCell.Text = headerCell.Text 
      Next 
     End If 
    End Sub 

あなたは同じスタイルを適用するためにHeaderStyleとFooterStyleに同じのCssClassを使用する必要があります。

コントロールを動的に追加したい場合(イメージのチェックボックスなど)、代わりにRowCreated-Eventを使用する必要があります(Tomas Voracekが示唆したように)。すべてのポストバックでコントロールを再生成する必要があり、グリッドへのデータソース

+0

それは働いた!ありがとう!:) – pee2002

1

だけtrueにGridViewのShowFooterプロパティを設定し

if (e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.Footer) 
{ 
    // add cells to row 
} 
+0

セルを追加する必要はありません。グリッドビューのShowfooterプロパティをtrueに設定している限り、セルは追加されます。次に、RowDataBoundイベントを使用して、フッターにいるかどうかを確認し、各セルにラベルまたはフィールドを割り当て/追加します。 – JonH

+0

@ JonH:RowDataBound-Eventは、ポストバックごとに読み込む必要があるため、ヘッダーの動的コントロールにRowCreatedを使用する必要があるため、コントロールを追加しないでください。 RowDataBoundは、通常、 '!IsPostBack'の場合にのみ呼び出されます。 –

+0

@Timその部分が真であれば、あなたはRowCreatedを使いたいです。 – JonH

0

に変更します。 次に、適切なアイデアがあります。まずShowFooter = Trueを設定すると、白として表示されるように、フッターにスタイルをいくつか与えたいと思うでしょう。

CSSをフッタプロパティの設定に適用すると、色が表示されます。すべてのフッターの細胞 - を設定フッターにヘッダーのテキストを配置する簡単な方法がある場合、JonHのコメントでは、あなたの質問によると

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //dont do anything 
    } 
    else if (e.Row.RowType == DataControlRowType.Footer) 
    { 
     e.Row.Cells[1].Text = "MyCol1"; 
     e.Row.Cells[2].Text = "MyCol2"; 
     e.Row.Cells[3].Text = "MyCol3"; 
    } 

Here's an article in case you need additional help

+0

まず、ありがとうございました。今、私は正しい道にいる。しかし、最後の質問:ヘッダー上のフッターラベルをどのように埋め込むのですか? (手動ではない)。私はすでにHeaderRow.Cells [i] .textを試していますが、成功していません:( – pee2002

+0

@pee - DataControlRowType.Headerにいるかどうかを確認するには別の方法があります。リストのリストを一度入力して、それを使用してフッターの値を入力してください – JonH

+0

これを行うには、より良い/エレガントな方法がありますか?私はメソッドを連想させる必要があるので、それらすべてを選択してください) – pee2002

関連する問題