我的sqlDatasource使用的是自定义的select和update,select使用的是正常query,没有任何问题。
update使用的是存储过程。使用这些数据的是GridView,进行操作的也是gridView自带的编辑功能。首先,该存储过程需要的参数有4个,其中3个是输入,1个是输出。
存储过程的参数定义如下:
ALTER PROCEDURE [dbo].[qs_updateStreet]
-- Add the parameters for the stored procedure here
@streetId uniqueidentifier,
@streetName nvarchar(30),
@postCode numeric(6,0),
@message nvarchar(50) OUTPUT当我使用select语句仅选择存储过程需要的那5个字段时,更新是会正常运作的。
SELECT [streetId],[streetName],[postCode] FROM [qs].[dbo].[QS_Street]一旦我要查询更多数据时,如:
SELECT [streetId],[streetName],[cityId],[postCode] FROM [qs].[dbo].[QS_Street]程序就会报错,说:为过程或函数qs_updateStreet指定了过多的参数。而我的sqlDatasource中的update命令并没有改变,依然如下:
            UpdateCommand="qs_updateStreet" 
            UpdateCommandType="StoredProcedure">
            <UpdateParameters>
                <asp:Parameter Name="streetId" Type="Object" />
                <asp:Parameter Name="streetName" Type="String" />
                <asp:Parameter Name="postCode" Type="Decimal" />
                <asp:Parameter Direction="InputOutput" Name="message" Type="String" Size="50" />
            </UpdateParameters>请问这是怎么回事?
谢谢!!

解决方案 »

  1.   

    <asp:Parameter Direction="InputOutput" Name="message" Type="String" Size="50" /> 
    不需要
      

  2.   

    刚才写漏了一点点,程序报错是在点击编辑后,再点击“更新”时出现的,select的显示都是ok的。就是update出问题。
    搞不懂是哪出了问题。
    因为存储过程也是ok的,update的参数数目也是ok的,就是在select那多显示些数据时出问题,郁闷啊。
    哪位高手支一招啊
      

  3.   

    感谢criedshy! 居然这么快就回复了。不好意思啊,message这个我需要啊,因为这个存储过程比较麻烦,里面有比较多的状况,我需要message来提示用户到底更新情况是怎么一回事。