我的数据源不支持删除?我怎么能激活它?

时间:2011-05-09 09:50:35

标签: c# .net asp.net visual-studio

我刚从Visual Studio 2005收到此消息,当我点击我使用界面配置网格时添加到gridview的删除命令时:

  

数据不支持删除   source'transactionSqlDataSource'   除非指定了DeleteCommand。

我该如何激活它?我希望我的用户在单击“删除”按钮时能够删除一行。

我已经将我的SQLDataSource的属性DeleteCommandType更改为StoredProcedure。 我还需要做什么?

更新

这就是我所做的,但我遗漏了一些东西,我无法编译:

这就是我在.cs做的事情:

public string DeleteCommand { get; set; }

我如何解决这个问题,它说得到的是身体缺失。我不习惯使用ASP.NET。你能帮我解决这部分代码吗?

这就是我在.aspx所做的:

<asp:SqlDataSource ID="transactionsSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:membershipsDBConnectionString %>"
        SelectCommand="SELECT [brukerId], [kjoptekvoten], [pengeneutbetalt], [fyringsolje], [biltype], [kjoptid] FROM [Informasjon]" DeleteCommandType="StoredProcedure"
        DeleteCommand="DELETE FROM [Informasjon] WHERE fyringsolje='Kull: 2,42 kg';">
    </asp:SqlDataSource>

数据源的配置是否正确?如果你发现delete命令没有使用上面的参数,请不要担心,它只是用于作业(我只需要通过查询)。

更新2 我一直在努力,但我无法解决它。我是ASP.NET的新手,我对所有术语都不是很熟悉。到底发生了什么?我怎么知道我的商店程序的名称?:

CS:

public string DeleteCommand { get { return DeleteCommand; } set { DeleteCommand = "";} 

Aspx:

<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:membershipsDBConnectionString %>"
        DeleteCommandType="StoredProcedure" SelectCommand="SELECT [id], [kjoptekvoten], [pengeneutbetalt], [fyringsolje], [biltype], [kjoptid] FROM [Informasjon]"
        DeleteCommand="StoredProcedureName">
    </asp:SqlDataSource>

当我点击“删除”时,该行需要从表格 Informasjon 中删除 Screenshot of GridView

2 个答案:

答案 0 :(得分:5)

DeleteCommand="<your stored proc>"
您的SqlDataSource中需要

以及您想要的任何参数,例如:

<DeleteParameters>
  <asp:Parameter Name="myParameter" Type="Int32" />
</DeleteParameters>

需要在SqlDatasource标记中添加。

答案 1 :(得分:2)

如果您创建了一个存储过程,则可以调用存储过程:

<asp:SqlDataSource ID="SqlDataSource5" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    // in the select command or your case delete you just input the name instead of a query
    SelectCommand="SELECT * FROM [Table] WHERE [Column1]=@Parameter1 AND [Column2]=@Parameter2 AND [Column3]=@Parameter3;" 
    DeleteCommand="StoredProcedureName"
    // Then ofcourse put the commandtype on storedprocedure but you already have that
    DeleteCommandType="StoredProcedure">
    // And you can declare the parameters like below
    <SelectParameters>
        <asp:Parameter Name="Parameter1" Type="String" />
        <asp:Parameter Name="Parameter2" Type="Boolean" />
        <asp:Parameter Name="Parameter3" Type="String" />
        <asp:Parameter Name="Parameter4" Type="Boolean" />
    </SelectParameters>
    <DeleteParameters>
         <asp:Parameter Name="Parameter1" Type="String" />
    </DeleteParameters>
</asp:SqlDataSource>

有关存储过程的详细信息,请参阅:What is a stored procedure? 或者您可以直接调用查询,如下例所示:

<asp:SqlDataSource ID="SqlDataSource5" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [informasjon];"
    DeleteCommand="DELETE FROM [informasjon] WHERE [id]=@id;">
    <DeleteParameters>
         <asp:Parameter Name="id" Type="Int" />
    </DeleteParameters>
</asp:SqlDataSource>

您必须为自己提供连接字符串。有关连接字符串的更多信息,请阅读:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.110%29.aspx