私は 2 つの gridviewsgv1
とid を持っていgv2
ます。両方のグリッドビューが を指しています。ObjectDataSource
ods1
DataSourceID="ods1"
私の質問は、ObjectDataSource
gridview が呼び出したイベントの選択をどのように知ることができるかですods1
。を呼び出したグリッドビューに基づいて、入力パラメーターを設定したいと考えていますods1
。
私は 2 つの gridviewsgv1
とid を持っていgv2
ます。両方のグリッドビューが を指しています。ObjectDataSource
ods1
DataSourceID="ods1"
私の質問は、ObjectDataSource
gridview が呼び出したイベントの選択をどのように知ることができるかですods1
。を呼び出したグリッドビューに基づいて、入力パラメーターを設定したいと考えていますods1
。
これは簡単にはできないと思いますし、ODS の考え方に反するような気がします。
ObjectDataSource
同じリポジトリ クラスからデータを取得するために2 つの を委任できますが、2 つの異なるパラメーター セットが必要な場合は、2 つの異なるデータ ソースが必要です。したがって、リポジトリ コードはオブジェクト データ ソース インスタンス間で共有されるため、コードを複製する必要はありません。
私はWiktor Zychla's answerに同意する傾向がありますが、本当にこれを行う必要がある場合は...
これを達成するために私が考えることができる唯一のことは、各の「DataBinding」イベントを処理しGridView
、セッション変数を設定して、どれがObjectDataSource
「Selecting」イベントを呼び出そうとしているかを示すことです。
したがって、GridView
メソッドは次のようになります。
protected void gv1_DataBinding(object sender, EventArgs e)
{
Session["currentGridID"] = "gv1";
}
と
protected void gv2_DataBinding(object sender, EventArgs e)
{
Session["currentGridID"] = "gv2";
}
次に、そのセッション変数をチェックして、今回の起動ObjectDataSource
中にどの ID が含まれているかを確認できます。ObjectDataSource
protected void ods1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
if(Session["currentGridID"] == "gv1")
{
}
else
{
}
}
objectdatasource を呼び出すグリッドビューの名前を取得するには
次のようなことができます:
string CallingGridName = ((ObjectDataSourceID)sender).ID;