【问题标题】:Deleting is not supported in my data source? How can i activate that?我的数据源不支持删除?我怎样才能激活它?
【发布时间】:2011-05-09 09:50:35
【问题描述】:

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

数据不支持删除 源“事务SqlDataSource” 除非指定了 DeleteCommand。

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

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

更新

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

这就是我在 .cs 中所做的:

public string DeleteCommand { get; set; }

我该如何解决这个问题,它说 get 缺少正文。我不习惯 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>

数据源的配置是否正确?如果您看到删除命令没有使用上述参数,请不要担心,它只是一个家庭作业(我只需要查询通过)。

更新 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

【问题讨论】:

  • 您是否按照它的指示设置了 DeleteCommand? =)
  • 指定它必须执行的存储过程(删除时)?
  • @J. Steen 你的意思是删除查询?
  • @Mythje 我不明白,我是怎么做到的?
  • 不,我的意思是 DeleteCommand,正如 Crypth 在下面回答的那样。 msdn.microsoft.com/en-us/library/…

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


【解决方案1】:
DeleteCommand="<your stored proc>"

在您的 SqlDataSource 中需要连同您想要的任何参数,例如:

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

需要在SqlDatasource标签中添加。

【讨论】:

  • 缺少什么?我需要做参数吗?我可以在没有他们的情况下让它工作吗?查看更新。
  • 不,没有必要使用参数,除非你想要它们并且你的 .cs 文件中不需要 DeleteCommand 字符串。什么是编译器错误?
【解决方案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

【讨论】:

  • 对不起,我还是很困惑。这就是我的代码目前的样子:&lt;asp:SqlDataSource ID="transactionsSqlDataSource" runat="server" ConnectionString="&lt;%$ ConnectionStrings:membershipsDBConnectionString %&gt;" SelectCommand="SELECT [brukerId], [kjoptekvoten], [pengeneutbetalt], [fyringsolje], [biltype], [kjoptid] FROM [Informasjon]" DeleteCommandType="StoredProcedure" OnSelecting="transactionsSqlDataSource_Selecting"&gt; &lt;/asp:SqlDataSource&gt; 我需要做一些与你所说的类似的事情,但只是为了删除。但是怎么做呢?
  • 如果添加标签 DeleteCommand="StoredProcedureName" 它将使用指定的存储过程。并且您的存储过程需要的所有参数也应该像我在上面的示例中那样添加
  • 我不知道我的 StoreProcedure 的名称是什么。我在哪里可以检查?我在任何地方都找不到。
  • 如果你在 sql 中创建你的存储过程,你必须给它一个名字,这个名字你也可以在 sql server(manager)msdn.microsoft.com/en-us/library/ms190669(v=SQL.100).aspx987654323@ 中找到这个名字
  • 你应该研究一下什么是存储过程,而不是等着教授教你。
猜你喜欢
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2017-02-20
  • 2018-12-22
  • 1970-01-01
相关资源
最近更新 更多