asp.net web-forms アプリケーションで GridView を使用して ObjectDataSource を設定しようとしています。ObjectDataSource に使用する予定の select コマンドは、ストアド プロシージャを使用してデータベースにクエリを実行することで、次のように DataTable を返します。
public DataTable GetProductsById(string ids = null)
{
DataTable productDataTable = new DataTable();
// Stored procedure (sqldb server) is executed here
SqlCommand cmd = new SqlCommand("GetProductByIdsRML_CLR", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter myParam = new SqlParameter("@ids", SqlDbType.NVarChar);
myParam.Value = (ids);
cmd.Parameters.Add(myParam);
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
dataAdapter.Fill(productDataTable);
return productDataTable;
}
このメソッドは、製品 ID のカンマ区切りのリストである文字列を引数として取ります。このパラメータは、クエリを実行するストアド プロシージャに渡されます。ただし、この入力ids
はコード内の別のメソッドを介してこのメソッドに渡されるため、これを正しく設定するのに問題があります。ここに問題があります。ObjectDataSource をセットアップしようとすると、ストアド プロシージャのパラメーターをどこから取得するかを尋ねられますが、「別のメソッド」はオプションではないためです。これが私が話していることです:
これらのオプションはどれも、「このプロジェクトの別の方法」をカプセル化していないようです。この状況で何をすべきかを誰かが知っていれば、それは素晴らしいことです。また、ストアド プロシージャから DataTable を返すのが得策でない場合は、それも問題ありません。かなり簡単に変更できますが、問題は解決しません。ありがとうございました!これには非常に簡単な解決策があるように感じます...