Обновление базы данных через Gridview вручную ASP.NET (VB) - PullRequest
0 голосов
/ 14 мая 2011
Protected Sub GridView1_RowCommand _
(sender As Object, e As GridViewCommandEventArgs) _
    Handles GridView1.RowCommand
    If e.CommandName.CompareTo("command") = 0 Then

        Dim itemID As Integer = Convert.ToInt32( _
            GridView1.DataKeys(Convert.ToInt32(e.CommandArgument)).Value)

        Dim sqlConn As New SqlConnection("connectionString")

        sqlConn.Open()

        Dim sqlComm As New SqlCommand("UPDATE itemTable SET property = (property + 1) WHERE id = '" + itemID + "', sqlConn")
        sqlComm.ExecuteNonQuery()

        sqlConn.Close()
    End If

End Sub

В принципе, это не работает, и я не понимаю. Я пытался понять это в течение нескольких дней, и я не вижу, что я сделал неправильно. Как вы можете видеть, я пытаюсь вручную обновить поле в моей базе данных значением (originalvalue) +1, когда пользователь нажимает поле кнопки соответствующей строки.

Я думаю, что я спрашиваю, может ли кто-нибудь указать на какие-либо ошибки, пожалуйста, или если есть лучший способ сделать это (без необходимости проходить через все DAL / BLL BS), пожалуйста, сообщите мне.

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 15 мая 2011

Я решил свою проблему!Посмотрите на код:

Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)

    // If multiple buttons are used in a GridView control, use the
    // CommandName property to determine which button was clicked.
    If e.CommandName = "commandname" Then

        // Convert the row index stored in the CommandArgument
        // property to an Integer.
        Dim index = Convert.ToInt32(e.CommandArgument)

        // Retrieve the row that contains the button clicked 
        // by the user from the Rows collection.
        Dim row = GridView1.Rows(index)

        // Calculate the new value.
        Dim tb = CType(row.FindControl("Label1"), Label)
        Dim newint As Integer = Convert.ToDouble(tb.Text) + 1

        // Get the id of the idea.
        Dim id As Integer = Convert.ToInt32( _
        GridView1.DataKeys(index).Value)

        //Manual update to the database.
        Dim con As New SqlConnection("connectionstring")
        Dim cmd As New SqlCommand("UPDATE ideatable SET field = " & (newint.ToString) & " WHERE id = " & (id.ToString), con)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()

        //Refresh the page.
        Page.Response.Redirect("default.aspx")

    End If

End Sub

И не забудьте установить OnRowCommand="GridView1_RowCommand" для gridview в коде файла aspx, я забыл об этом раньше!: /

Я так счастлив, спасибо за всю предложенную помощь!Надеюсь, что этот ответ поможет кому-то вроде меня, который застрял.

0 голосов
/ 14 мая 2011

Просмотрите строку, которую вы генерируете, и попытайтесь выполнить ее вручную, а затем произойдет ОБНОВЛЕНИЕ таблицы.

Поскольку я думаю, что "ItemId" отсутствует в вашей таблице.

Попробуйте сделать это в SQL Server: «Выбрать * из itemTable Where id = ItemId», потому что я думаю, что itemId отсутствует в вашей таблице.

0 голосов
/ 14 мая 2011

Я думаю, что в вашем предложении есть проблема: - Попробуй ниже один на месте своего утверждения

Dim sqlComm As New SqlCommand ("UPDATE itemTable SET property = (property + 1) WHERE id =" + itemID+ "", sqlConn)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...