【问题标题】:GridView update causes "incorrect syntax near 'nvarchar'" errorGridView 更新导致“'nvarchar' 附近的语法不正确”错误
【发布时间】:2013-04-18 08:47:32
【问题描述】:

尝试在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>

我猜测问题出在更新命令上,但在 SQL 中运行时它可以正常工作:

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

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

如果有人能找出问题所在,我将不胜感激。

【问题讨论】:

  • 只是好奇,你解决过这个问题吗?

标签: asp.net gridview


【解决方案1】:

首先让我感到震惊的是,您应该将 UpdateParameter 更改为:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 2021-01-23
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多