GridView更新导致“nvarchar'附近的语法不正确”错误

时间:2013-04-18 08:47:32

标签: asp.net gridview

尝试在GridView中使用更新时遇到了一个主要问题。从下面的代码中,一旦我点击“编辑”,我就可以选择更改“KPI”名称和“当前目标”。但是,一旦我点击“更新”,我收到一条错误消息:

  

'nvarchar'附近的错误sysntax

这是我的标记:

<p>
    <br />
    <asp:DropDownList ID="GroupSelection" runat="server" DataSourceID="Group" DataTextField="FcstGroup"
        DataValueField="FcstGroup">
    </asp:DropDownList>
</p>
<p>
    <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
        </Columns>
    </asp:GridView>
</p>
<p>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WFMConnectionString3 %>"
        SelectCommand="select 
                            case _parameter.name as KPI,
                            [target]*100 as [Current Target]
                            from _parameter inner join _reporting_group
                            on _parameter.reporting_group = _reporting_group.id

                            where _reporting_group.name = @WG " 
UpdateCommand="update _parameter set target = .80
                                where reporting_group = (select ID from _reporting_group where name = @WG)
                                and name = 'nco_i_e' ">
        <SelectParameters>
            <asp:ControlParameter ControlID="GroupSelection" Name="WG" PropertyName="SelectedItem.text" />
        </SelectParameters>
        <UpdateParameters>
            <asp:ControlParameter ControlID="GroupSelection" Name="WG" PropertyName="SelectedItem.text" />
        </UpdateParameters>
    </asp:SqlDataSource>
</p>
<asp:SqlDataSource ID="Group" runat="server" ConnectionString="<%$ ConnectionStrings:WFMConnectionString3 %>"
    SelectCommand=" SELECT     distinct _reporting_group.name AS FcstGroup
FROM         dbo._metrics INNER JOIN  
                  dbo._reporting_group ON dbo._metrics.reporting_group = dbo._reporting_group.id ">
</asp:SqlDataSource>

我猜测问题出在update命令上,但在SQL中运行时这是正常的:

UpdateCommand="update _parameter set target = .80
                                where reporting_group = (select ID from _reporting_group where name = @WG)
                                and name = 'nco_i_e' ">

请注意,目前,update命令只使用固定的“目标”值和固定的“名称”值。最后,我需要使用在“当前目标”中输入的值和KPI值。但是,一旦我弄清楚为什么我收到'nvarchar'错误信息,我就会谈到这一点。

如果有人能够发现问题所在,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

第一件事就是跳出来,因为你应该将UpdateParameter更改为:

<asp:ControlParameter ControlID="GroupSelection" Name="WG" PropertyName="SelectedItem.Text" />

SelectedItem.text不是有效的属性(.Text应该大写)。

可能导致问题的其他因素是SQL中的数据类型。如果您的“目标”列无法接受.80的值,或者您的“名称”值无法接受您在“GroupSelection”DropDownList中选择的任何内容,则可能会导致此类语法错误。< / p>