Ошибки не отображаются, но хранимая процедура не будет выполняться при нажатии кнопки - PullRequest
0 голосов
/ 29 мая 2019

У меня есть 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 голосов
/ 29 мая 2019

Предлагаю традиционную отладку:

  • Установите точку останова на RemoveLikeBtn_Click и проверьте, возвращает ли LikesLB.SelectedValue ожидаемый идентификатор.
  • Если да, попробуйте выполнить запрос вручную в SQLServer Management Studio и посмотрите, не удалена ли соответствующая запись.
  • Если нет, отладьте хранимую процедуру (выполните ее снова, шаг за шагом, нажав F11).
  • Если это не работает только в вашем приложении, проверьте строку подключения и убедитесь, что вы обращаетесь к базе данных таким же образом (встроенная защита или вход в систему sql и есть ли различия в правах).
  • Выполните GRANT EXECUTE ON [dbo].[sp_Delete_ClientInterests] TO PUBLIC и посмотрите, будет ли оно работать.
  • Если да, REVOKE EXECUTE ON [dbo].[uspLogError] TO PUBLIC снова и предоставить выполнение только для необходимых ролей.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...