没有显示错误,但是单击按钮时将不执行存储过程

时间:2019-05-29 19:04:01

标签: sql-server vb.net stored-procedures

我有2个列表框,用于存储客户的点赞和不喜欢。选中一个项目后,每个列表框下方都有一个按钮,其中一个显示“删除喜欢”,另一个显示“删除不喜欢”。当我单击任一按钮时,什么也没有发生。我的屏幕刚刚刷新。一段时间以来,它运行良好,并且此后我还添加了一个与存储过程绑定的搜索框。这是我所做的唯一重大更改,尽管不确定为什么会产生任何影响。

我确实删除了我添加的搜索框,但这并没有改变任何内容。我将按钮上的自动回发更改为false,也没有任何改变。我删除了数据绑定,重新添加了它们,似乎什么也无法使按钮正常工作。

这是“删除喜欢的照片”按钮。由于“删除不喜欢”按钮是相同的,因此我不会粘贴该代码。

Protected Sub RemoveLikeBtn_Click(sender As Object, e As EventArgs) Handles RemoveLikeBtn.Click

    Dim connection As New SqlConnection(My.Settings.dbInterests)
    Dim insertProcedure As String = "sp_Delete_ClientInterests"

    Dim insertCommand As New SqlCommand(insertProcedure, connection)
    insertCommand.CommandType = CommandType.StoredProcedure
    insertCommand.Parameters.AddWithValue("@ClientInterestID", LikesLB.SelectedValue)

    Try
        connection.Open()
        insertCommand.ExecuteNonQuery()
    Catch ex As SqlException
        MsgBox("Please select an interest to remove")
    Finally
        connection.Close()
    End Try

    LikesLB.DataBind()
    InterestsLB.DataBind()
    DislikesLB.DataBind()

这是存储过程

CREATE PROCEDURE [dbo].[sp_Delete_ClientInterests]
    (@ClientInterestID INT)
AS
    DELETE FROM ClientInterests
    WHERE ID = @ClientInterestID;
GO

这是绑定到的列表框,以及按钮控件本身

<div class="col-md-3 bgLightgreen">
    <h5>Individual Likes</h5>
    <telerik:RadListBox ID="LikesLB" runat="server" Height="500px" Width="100%" Sort="Ascending" DataSourceID="dboInterestLikeList" DataTextField="Interest" DataValueField="InterestID" Skin="MetroTouch">
        <ButtonSettings TransferButtons="All"></ButtonSettings>
    </telerik:RadListBox>
    <asp:SqlDataSource ID="dboInterestLikeList" runat="server" ConnectionString="<%$ ConnectionStrings:Interests.My.MySettings.dbInterests %>" SelectCommand="sp_Client_Interest_Likes_List" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:ControlParameter ControlID="ClientDDL" Name="ClientID" PropertyName="SelectedValue" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>
    <br />
    <br />
    <telerik:RadButton ID="RemoveLikeBtn" runat="server" Text="Remove a Like" BackColor="#CCCCCC"></telerik:RadButton>
</div>

1 个答案:

答案 0 :(得分:0)

我建议使用传统调试:

  • RemoveLikeBtn_Click上放置一个断点,并检查LikesLB.SelectedValue是否返回期望的ID。
  • 如果是,请尝试在SQLServer Management Studio中手动运行查询,并查看是否删除了相应记录。
  • 如果没有,请调试存储过程(按F11逐步重新执行)。
  • 如果它仅在您的应用程序中不起作用,请检查连接字符串以及是否以相同的方式访问数据库(集成安全性或sql登录以及权限是否存在差异)。
  • 执行GRANT EXECUTE ON [dbo].[sp_Delete_ClientInterests] TO PUBLIC,然后查看它是否有效。
  • 如果是,请再次REVOKE EXECUTE ON [dbo].[uspLogError] TO PUBLIC并仅授予执行所需角色的权限。