2012-01-12 10 views
1

私は、テキストボックスと2つのLinkBut​​ton UpとDownを持つgridviewを持っています、私はLinkBut​​tonを無効にしたいと思っています。条件は、LinkBut​​ton Upは最初の行で無効にする必要がありLinkBut​​ton Downは最後に無効にする必要があります行。GridViewの最初と最後の行に基づいてItemTemplate LinkBut​​tonを無効にして有効にするにはどうすればよいですか?

いくつかのテストのexpで..

foreach (GridViewRow row in GridView1.Rows) 
{ 
    // some code? 
} 

は、いくつかのいずれかの方法それを行う方法を教えてください..私はonRowDataBoundでやろうとしています..しかし、私が行うことができません。

答えて

2

// Bind 
gv.DataSource = datasource; 
gv.DataBind(); 

// Disable Up/Down LinkButtons 
if (gv.Rows.Count > 0) 
{ 
    // With FindControl() if you know the IDs: 
    ((LinkButton)gv.Rows[0].Cells[0].FindControl("lb_up").Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].FindControl("lb_down").Enabled = false; // Disable down LinkButton 

    // -- OR -- 

    // Directly index the controls, assuming Up is at 0, and Down is at 1: 
    ((LinkButton)gv.Rows[0].Cells[0].Controls[0]).Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].Controls[1]).Enabled = false; // Disable down LinkButton 
} 

あなたはFindControlメソッドまたは単に直接インデックスのいずれかのコントロールを使用することができます。

+0

このコードはグリッドのDataBoundイベントで働いていました。 – MrPhil

0

RowDataBoundイベントでRowTypeを比較する必要があります。このような何か:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    GridViewRow row = e.Row; 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     ..... 
    } 
} 

あなたがそれぞれHeaderTemplateとFooterTemplateの中DownUpボタンを追加することができます。

if (row.RowType == DataControlRowType.Header) 
    { 
    } 

if (row.RowType == DataControlRowType.Footer) 
    { 
    } 
+0

5つのテキストボックスがGridviewにあると仮定して、5つのテキストボックスをすべて表示してbtnを表示しています。テキストボックスを上下に移動しようとすると、テキストを移動すると言うことができます。最初のテキストボックスのときはbtnを無効にし、最後のテキストボックスの場合はbtnを無効にする必要があります。 – Rocky

0

は、あなたがあなたのリンクがasp:TemplateField内にあるthis.Assumingのようなあなたのグリッドをバインドし、同じタスクを実行します。私は、GridViewコントロールがバインドされた後、私はコントロールを無効う、OnRowDataBoundイベントでそれをしないだろう

if (GridView1.PageIndex == 0) 
    { 
    GridView1.Rows[0].FindControl("lnkUp").Visible = false; 

    } 
    if (GridView1.PageIndex == (GridView1.PageCount - 1)) 
    { 
     GridView1.Rows[GridView1.Rows.Count - 1].FindControl("lnkDown").Visible = false; 
    } 
関連する問題