asp.net 尽管DeleteCommand在UpdateCommand中运行,但仍收到"必须声明标量变量"错误

shyt4zoc  于 2022-11-26  发布在  .NET
关注(0)|答案(2)|浏览(77)

我的GridView有一个UpdateCommand和DeleteCommand,我对它们都使用了一个@ProjUID变量。它似乎对UpdateCommand工作得很好,但对DeleteCommand就中断了。在我使用它的方式上,这两者几乎没有什么区别。

<asp:GridView ID="ProjectTable" runat="server" Font-Names="Verdana,Arial" Font-Size="12px" AutoGenerateColumns="False" DataSourceID="PopulateProjectTable" AllowPaging="True" PageSize="250" AllowSorting="True" OnRowDataBound="ProjectTable_RowDataBound">

这就是我创建GridView的方法,然后我创建了编辑和删除所需的列...

<asp:TemplateField>
    <ItemTemplate>
        <div style="white-space: nowrap;">
            <asp:LinkButton ID="editButton" runat="server" CommandName="Edit">Edit</asp:LinkButton>
            <asp:LinkButton ID="deleteButton" runat="server" CommandName="Delete" Visible="False" OnClientClick="javascript:return confirm('Are you sure you want to DELETE?');" >Delete</asp:LinkButton>
        </div>
    </ItemTemplate>
    <EditItemTemplate>
        <div style="white-space: nowrap;">
            <asp:LinkButton ID="BtnUpdate" runat="server" CommandName="Update">Update</asp:LinkButton>
            <asp:LinkButton ID="BtnCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
        </div>
    </EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProjUID" HeaderText="ProjUID" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" SortExpression="ProjUID" />

hiddencol的CSS...

.hiddencol 
{ 
    display: none; 
}

最后,这是我的SQLDataSource的样子...

<asp:SqlDataSource ID="PopulateProjectTable" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ODSConnectionString %>"
        SelectCommand="..."
        UpdateCommand="UPDATE [Pipeline] SET Project_Name = @Project_Name, Comment_Submission = @Comment_Submission, Hide_From = @Hide_From, LastModifiedDate = GETDATE(), LastModifiedby = USER WHERE ProjUID = @ProjUID and Internal_External = @Internal_External"
        DeleteCommand="DELETE FROM [Pipeline] WHERE ProjUID = @ProjUID">
        <UpdateParameters>
            <asp:Parameter Name="ProjUID"/>
            <asp:Parameter Name="Project_Name" Type="String"/>
            <asp:Parameter Name="Comment_Submission" Type="String"/>
            <asp:Parameter Name="Hide_From" Type="Boolean" />
            <asp:Parameter Name="Internal_External"/>
        </UpdateParameters>
        <DeleteParameters>
            <asp:Parameter Name="ProjUID" />
        </DeleteParameters>
        <SelectParameters>
            ...
        </SelectParameters>
</asp:SqlDataSource>

我对UpdateParameters的设置完全相同,但它没有像我删除一行时那样给予“必须声明标量变量@ProjUID“的错误。这是怎么回事?
如果信息不够,请告诉我。

f0ofjuux

f0ofjuux1#

我想出来了。我只需要补充一句:

DataKeyNames="ProjUID"

如果这不是一个理想的解决方案,或者如果这是一个*****解决方案,请让我知道!

o7jaxewo

o7jaxewo2#

如果使用ODBC连接,则不能使用命名参数。请尝试此操作。
DeleteCommand="DELETE FROM [Pipeline] WHERE ProjUID = ?">

相关问题