2017-05-09 19 views
0

私が継承したプロジェクトに問題があります。これは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#コードを介してデータソースにデータを読み込む傾向があります。私は何を逃したのですか?それでも

+0

データソースに定義されている選択パラメータはありません。 –

+0

@SeanLange私はページからパラメータコードを追加しました - 申し訳ありません私は明らかにあまりにも多くのコードを掲載したので、以前は別の質問を投稿していたし、うんざりしていました! – Daniel

答えて

0

以上、それは仕事をした他の人とは対照的に、このデータグリッドに私のために働いていなかった方法で、私はしかし、解決策を発見した理由についてフィードバックなし:

protected void ds_Supplier_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     System.Data.Common.DbParameter param = e.Command.CreateParameter(); 
     param.ParameterName = "@BranchID"; 
     param.Value = GetBranchID(); 
     e.Command.Parameters.Add(param); 
    } 

私からの答えを使用しますthis questionは、しかし、私は下のエラーを得ていたとしてDbParameterオブジェクト参照の前にSystem.Data.Common.を追加する必要がありました:私はジュースので

変だった何
The type or namespace name could not be found (are you missing a using directive or an assembly reference?) 

Visual StudioはCreateParameter()機能を認識していることでしたt DbParameterSystem.Data.Common.を追加しようとしました。

The broken code

関連する問題