2012-04-11 10 views
0

グリッド内の項目を選択するチェックボックスを含むObjectDataSourceにバインドされたgridviewがあります。 グリッドビューから基になるObjectDataSourceを取得

がCheckChangedイベントでは、私はこのようないくつかのコードを持っている:私はGridViewRowへの参照を持っていることを今

 //Clear the existing selected row 
     foreach (GridViewRow oldrow in uxRaceList.Rows) 
     { 
      var otherOpt = (RadioButton)oldrow.FindControl("rdbRaceNum"); 
      if (otherOpt != sender) 
       otherOpt.Checked = false; 
     } 

     //Set the new selected row 
     RadioButton rb = (RadioButton)sender; 
     GridViewRow row = (GridViewRow)rb.NamingContainer; 
     ((RadioButton)row.FindControl("rdbRaceNum")).Checked = true; 

を、それは私のために私OrigionalDataSourceObjectで取得することはできますか?

は私がgirdに表示されたデータで取得することができます知っている:

_selectedRaceNum = Convert.ToInt32(rb.Text.Substring(0, 1)); 

しかし、私はのような何かをしたい:

VAR odsMyobject = row.DataItem MyCustomObjectとして;

グリッドIDを保存してデータベースを参照してデータを取得することができますが、データへの別のラウンドトリップは避けたいと思います。

おそらく私はオブジェクトのObjectDataSourceに何か尋ねることができますか?

ありがとうございました。

答えて

0

あなたの質問 -今私はGridViewRowへの参照を持っていること、それは私が私の OrigionalDataSourceObjectで取得することは可能でしょうか?

あなたGridViewDataSource ObjectPage Life Cycleの終了によってDisposedになります。 Pageが読み込まれると、Postbackの間にQuick Watchで確認できます。


あなたの質問 -私はID int型彼グリッドを保存し、データを得るために、私 データベースを振り返るためにそれを使用することができます知っているが、私は データに別のラウンドトリップを回避したいです。

あなたはPostback中にViewState/Sessionにデータを保持するオプションを持っています。同じページにしかデータを保存しない場合は、ViewStateのみを考慮する必要があります。


あなたの質問 -しかし、私は何かしたい:MyCustomObjectとして

VAR odsMyobject = row.DataItemを。

あなたはGridViewDataKeysを使用することができますし、簡単にあなたがすでにNamingContainerを使用して計算しているRowIndexを使用してアクセスすることができます。もう1つのオプション/代替方法はコントロールを非表示にし、BindあなたのPropertyでそれをアクセスし、以下のようにこのコントロールにアクセスすることです。

((ControlType)row.FindControl("ControlID")). 
+0

ありがとうございました。私は、DataSourceオブジェクトの周りの長さについて誤解を感じました。 – Steve

0

私はあなたの質問を誤解されるかもしれないが、あなたがその特定のGridViewRowにバインドされたデータオブジェクトをしたい場合、あなたはそれを得るためのDataItemプロパティを使用することができるはずです。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.dataitem.aspx

GridViewRowオブジェクトが バインドされている基礎となるデータ・オブジェクトを取得します。

関連する問題