我的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
“的错误。这是怎么回事?
如果信息不够,请告诉我。
2条答案
按热度按时间f0ofjuux1#
我想出来了。我只需要补充一句:
如果这不是一个理想的解决方案,或者如果这是一个*****解决方案,请让我知道!
o7jaxewo2#
如果使用ODBC连接,则不能使用命名参数。请尝试此操作。
DeleteCommand="DELETE FROM [Pipeline] WHERE ProjUID = ?">