我的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
”错误。发生了什么事?
如果这还不够,请告诉我。
答案 0 :(得分:1)
想出来。我只需要添加:
DataKeyNames="ProjUID"
如果它不是理想的解决方案,或者它是 解决方案。请让我知道!