2016-10-03 9 views
4

マイTemplateFieldは、このように作成されました。このイベントが発生した場合、今RowDataBound-イベントがエラー終了でにFindControl [未解決]

protected void GridViewLehrling_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    DropDownList DropDownListDienstleistungBackEnd = (DropDownList)GridViewLehrling.Rows[GridViewLehrling.SelectedIndex].FindControl("DropDownListDienstleistung"); 
    HiddenField HiddenFieldGutscheinartIDBackEnd = (HiddenField)GridViewLehrling.Rows[GridViewLehrling.EditIndex].FindControl("HiddenFieldGutscheinartID"); 
} 

は私もこのイベントを作成しました。このエラーは発生しました:

インデックスが範囲外でした。負でなく、コレクションのサイズが 未満である必要があります。パラメータ名:インデックス

任意の提案?

答えて

0

次のコードを使用してみてください:

protected void GridViewLehrling_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.RowState == DataControlRowState.Edit) 
     { 
      DropDownList ddlBackEnd = (DropDownList)e.Row.FindControl("DropDownListDienstleistung"); 
      HiddenField hdnBackEnd = (HiddenField)e.Row.FindControl("HiddenFieldGutscheinartID"); 
     }   
    } 
} 

コードは、最初の行のtypeをチェックします。フッターとヘッダー行が除外されるように、DataRowにする必要があります。次にコードは、行が実際に編集モードにあるかどうかをチェックします。この場合、コードは実際の行でFindControlを実行するコントロールをフェッチします。

+0

私は何を探しましたか? THX –

0

あなたはそれがdatarow

これを試してみてください現在の行をチェックする必要がどのようにヘッダーのドロップダウンコントロールを見つけることができません。

protected void GridViewLehrling_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (GridViewLehrling.Rows.Count > 0) 
      { 
       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
        DropDownList DropDownListDienstleistungBackEnd = (DropDownList)GridViewLehrling.Rows[GridViewLehrling.SelectedIndex].FindControl("DropDownListDienstleistung"); 
        HiddenField HiddenFieldGutscheinartIDBackEnd = (HiddenField)GridViewLehrling.Rows[GridViewLehrling.EditIndex].FindControl("HiddenFieldGutscheinartID"); 
       } 
      } 
     } 
+0

私にとっては役に立たない。エラーは依然として同じです。 sanx –

+0

答えを更新しました。 –

+0

まだまだsucces –

関連する問題