0

グリッド内のアイテムを選択するためのチェックボックスを含む、ObjectDataSourceにバインドされたグリッドビューがあります。

CheckChangedイベントでは、次のようなコードがあります。

       //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;

GridViewRowへの参照ができたので、OrigionalDataSourceObjectにアクセスできますか?

グリッドに表示されているデータを取得できることはわかっています。

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

しかし、私は次のようなものが欲しいです:

var odsMyobject = row.DataItem as MyCustomObject;

IDをグリッドに保存し、それを使用してデータベースを振り返ってデータを取得できることはわかっていますが、データへの別のラウンドトリップは避けたいと思います。

おそらく私はどういうわけかObjectDataSourceにオブジェクトを要求することができますか?

ありがとう。

4

2 に答える 2

0

あなたの質問-GridViewRowへの参照ができたので、OrigionalDataSourceObjectにアクセスすることはできますか?

の終わりまでにGridView DataSource Objectなります。ロードされたら、中にチェックインできます。DisposedPage Life CycleQuick WatchPostbackPage


あなたの質問-グリッドにIDを保存し、それを使用してデータベースを振り返ってデータを取得できることはわかっていますが、データへの別のラウンドトリップは避けたいと思います。

の間にViewStateデータを保持するオプションがあります。データを同じページにのみ保持する場合は、のみを考慮する必要があります。SessionPostbackViewState


あなたの質問-しかし、私は次のようなものが欲しいです:

var odsMyobject = row.DataItem as MyCustomObject;

で使用でき、を使用してすでに計算したを使用DataKeysGridViewて簡単にアクセスできます。別のオプション/代替手段は、コントロールとそれをあなたと一緒に非表示にし、以下のようにこのコントロールにアクセスすることです。RowIndexNamingContainerBindProperty

((ControlType)row.FindControl("ControlID")).
于 2012-04-11T03:32:20.247 に答える
0

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

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

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

于 2012-04-11T04:06:01.807 に答える