2011-09-14 21 views
4

現在、私はRowDataBoundに次のコードを持っている:GridViewの編集時にRowDataBoundを回避する方法は?

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      Label groupID = (Label)e.Row.FindControl("idgroup"); 
      LinkButton myLink = (LinkButton)e.Row.FindControl("groupLink"); 
      myLink.Attributes.Add("rel", groupID.Text); 
     } 
} 

はしかし、私は編集リンクをクリックしたとき、それはそのコードを実行しようとするとエラーがスローされます。したがって、GridViewが読み取りモードの場合にのみ、そのコードをどのように実行できますか? e.Row.RowStateのチェックを追加

if (e.Row.RowState != DataControlRowState.Edit) 
{ 
    // Here logic to apply only on initial DataBinding... 
} 

答えて

7

ここでそれを行う方法です!編集中の行を除いて、行のコードを読み込みまたは編集モードでのみ実行します。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      if ((e.Row.RowState == DataControlRowState.Normal) || (e.Row.RowState == DataControlRowState.Alternate)) 
      { 
       Label groupID = (Label)e.Row.FindControl("idgroup"); 
       LinkButton myLink = (LinkButton)e.Row.FindControl("groupLink"); 
       myLink.Attributes.Add("rel", groupID.Text); 
      } 
     } 
    } 
6

を編集していないときには、このようなチェックを追加することができますOnrowDataBound = "GridView1_RowDataBound"のようにコードを削除し、上記のコードを無効にします。

+0

編集リンクをクリックしてもこの条件を満たしています。したがって、編集中にコードを実行することは避けられません。その他のオプションは?ありがとうたくさん – aleafonso

+0

eまたはe.Rowオブジェクトの他のプロパティをデバッグしてチェックして、行の編集ステータスを検出してそれに応じて行動できるかどうかを確認できますか? :) –

+0

アドバイスをいただきありがとうございます!私はちょうどあなたが述べたようにe.Rowオブジェクトをデバッグして見てそれをソートしました。私はstackoverflowが私自身の質問に答えることができるようになるとすぐにそれを公開します。乾杯! – aleafonso

2

:あなたのGridViewで

if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
{ 
    //In Edit mode 
} 
+0

この条件は、コードが実行されていないので不適切です(「編集」リンクをクリックしていなくても)。したがって、RowDataBound内のコードは決して実行されません。その他のオプションは?前もって感謝します! – aleafonso

+0

コードではどういう意味ですか? – Waqas

+0

実行されません... – aleafonso

0

を、その意志OnrowDataBoundイベントの 検索をしかし...

+0

誤解をおかけして申し訳ありません。私はRowDataBoundを実行するだけですが、GridViewが読み込みモード(編集リンクをクリックした後の編集モードではありません)のときにのみ必要です。とにかくありがとう – aleafonso

2

Davideの答えはほぼ正しいです。しかし、代替の行では失敗します。ここで正しい解決策は次のとおりです。

関連する問題