2011-12-05 5 views
0

...私は動的にバインドされているユーザーコントロールの一部であるコントロール(隠し入力フィールド)のクライアントIDを検索しようとしていますグリッドビュー 'アイテムテンプレート'。 "RowDataBound"イベントで次の処理を実行しようとしていて、動作しないようです。グリッドビュー内のユーザーコントロール内のコントロールのクライアントIDを確認

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (ShowSelectColumn) 
     { 

      HiddenField MfrHiddenField = (e.Row.Cells[2].FindControl("MfrNumHiddenfield")) as HiddenField; 
} 

ここで、「MfrNumHiddenfield」は隠れた入力フィールドのIDです。 e.row.cells [2]「のユーザ制御は」

以下

...に結合された列のセルの数は、ユーザーコントロールをGridViewコントロールに追加される方法である。

grid.Columns.Add(CreateTemplateField(
      path + "ManufacturerHeader.ascx", 
      path + "ManufacturerCell.ascx")); 

私は何をしようとしていますか?助けてください

+0

コントロールのIDを見つけようとしているのですか、そのIDからコントロールを取得しようとしていますか?あなたは既にIDを知っているようですか? – c0deNinja

+0

私は何をしているのかコントロールの "クライアントID"を知る必要があります。 "masterpage-Gridview-column-usercontrol"にラップされているため、コントロールのIDを使用してコントロールを見つけるのが難しくなっています。バインド時にバインドされた列の内部のコントロールを "FindControl"メソッドを使用して検索しようとしました。 – karry

+0

どこからこの値を取得しようとしていますか?マスターページかページ? – TheGeekYouNeed

答えて

1

通常、セルを見る必要はありません。 e.Row.FindControl("MfrNumHiddenfield")で十分です。

カスタムコントロールのコントロールを探しているので、あなたが試みることができる:

e.Row.FindControl("manufacturerCellControl").FindControl("MfrNumHiddenfield") 

は、私はそれを試したことがないが、それはもっともらしく思えます。

より良いオプションは、ManufacturerCellコントロールのプロパティを公開して、必要な変更を加えることです。これにより、コントロールのクライアントは内部の仕組みを理解する必要がなくなります。プロパティを作成し、コードをgetsetのメソッドで記述してください。

+0

Iそのことをやってみました。その方法はありませんでした。 – karry

+0

'HiddenField'は' Manufacturer ... 'コントロールの中にありますか? – drdwilcox

+0

はい...それはManufacturerCell.ascxコントロールにあります – karry

関連する問題