私が継承したプロジェクトに問題があります。これはDevExpressを使用し、グリッドの一部はデータソースを満たすC#コードを持ち、他のものは単純な(ish)選択および更新クエリを実行するASPコードを持っています。SQLクエリにパラメータを渡す際に問題が発生しました。OnSelectingイベント
グリッドの1つがあまりにも多くの情報を示していた(選択クエリが正しく書かれていなかった)、利用可能なオプションが多すぎる。これは簡単なwhere
節で修正されるでしょうが、私の実装がなぜ機能していないのか分かりません。ページには、同じテクニックを使用する3つのグリッドがありますが、コピーしようとすると機能しません。
ASP:
<asp:SqlDataSource
ID="ds_Supplier" runat="server"
ConnectionString="<%$ ConnectionStrings:Portal_ConnectionString %>"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT [SupplierID], [SupplierName] FROM [tbl_Supplier] where BranchID = @BranchID"
OnSelecting="ds_Supplier_Selecting">
</asp:SqlDataSource>
<SelectParameters>
<asp:Parameter DefaultValue="0" Name="BranchID" Type="Int32" />
</SelectParameters>
C#の:これは、以下のSQLエラースロー
protected void ds_Supplier_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@BranchID"].Value = GetBranchID();
}
:
An SqlParameter with ParameterName '@BranchID' is not contained by this SqlParameterCollection
紛らわしい事は、そのグリッドで直接それ以上ともそれ以下同じロジックを踏襲し、面倒をなくして作業してください。私は他の同様の質問を見たことがありますが、実際にはこのシナリオには適用されないC#コードを介してデータソースにデータを読み込む傾向があります。私は何を逃したのですか?それでも
データソースに定義されている選択パラメータはありません。 –
@SeanLange私はページからパラメータコードを追加しました - 申し訳ありません私は明らかにあまりにも多くのコードを掲載したので、以前は別の質問を投稿していたし、うんざりしていました! – Daniel