2011-08-10 5 views
0

私はSQLデータソースから実行しているグリッドビューを持っています。手順送信するより多くのフィールドを指定する

selectコマンドはかなり長いクエリです。 updateコマンドはストアドプロシージャであり、selectクエリのフィールドの一部のみを更新します。しかし何らかの理由で、私が更新プログラムを実行すると、.Netはストアドプロシージャ呼び出しに他の選択クエリフィールドのいくつかを追加しています。

私は回避策をとっています(ストアドプロシージャに余分なフィールドを追加しました)が、ここでこれをやっている理由を知りたいと思います(私は約10の他の場所で、問題)と無関係なフィールドを完全に削除するために私ができること。

これは、挿入についての私のデータソース

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="CONNECT STRING" 
SelectCommand="SELECT TID, CIName, TTDesc, TLA, TDesc, TDel = Case When (Select Count(PAID) from PropertyAttribute where PropertyAttribute.TID=T.TID)=0 then 'delete.gif' else 'onepixblank.gif' End, 'transportdel.asp?TID=' + Convert(varchar(10),TID) as TDelLink FROM Transport T, CountryID C, TransportType TT where T.TType=TT.TType and T.CIID=C.CIID and TT.CIID=C.CIID order by C.CIID, TT.TType, TDesc" 
UpdateCommand="TransportUpdate" UpdateCommandType="StoredProcedure"> 
    <UpdateParameters> 
     <asp:Parameter Name="TID" Type="Int32" 
     <asp:Parameter Name="TDesc" Type="String" 
     <asp:Parameter Name="TLA" Type="String" 
     <asp:ControlParameter ControlID="UserName" Name="UName" PropertyName="Text /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

答えて

0

は何ですか? InsertCommandを設定する必要はありませんか?私はしばしばDataSourceから自動的に塗りつぶされたグリッドを使用していませんが(何が起こるか制御したいと思っています)、InsertCommandはSelectCommandから自動的に生成されると思います。おそらく、それはあなたの場合です:それは更新ではなく、挿入物ですか?それとも、私は完全に間違っていますか?

+0

いいえ - 間違いなく挿入(別の場所で実行され、別々に処理されている)であり、挿入文がない理由です。 – Rachel

関連する問題