尽管在UpdateCommand

时间:2016-03-18 15:59:41

标签: asp.net gridview webforms

我的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”错误。发生了什么事?

如果这还不够,请告诉我。

1 个答案:

答案 0 :(得分:1)

想出来。我只需要添加:

 DataKeyNames="ProjUID"

如果它不是理想的解决方案,或者它是 解决方案。请让我知道!