手动更新数据库Gridview ASP.NET(VB)

时间:2011-05-14 03:57:44

标签: asp.net database vb.net

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 个答案:

答案 0 :(得分:1)

我已经解决了自己的问题!看一下代码:

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

还记得在aspx文件代码中为gridview设置OnRowCommand="GridView1_RowCommand",我之前忘记了! :/

我很高兴,感谢您提供的所有帮助!希望这个答案可以帮助像我一样陷入困境的人。

答案 1 :(得分:0)

我觉得你的句子有问题: - 在你的陈述的地方尝试下面的

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

答案 2 :(得分:0)

观察您正在生成的字符串,并尝试手动执行该字符串,然后表格会更新或不更新。

因为我觉得你的桌子里没有“ItemId”。

尝试在SQL Server中执行此操作“选择*来自itemTable,其中id = ItemId”因为我认为itemId不在您的表中。