设置UpdateParameter的DefaultValue会出错

时间:2011-07-22 13:28:57

标签: asp.net vb.net

我正在使用以下snippit代码来更新条目:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    With SqlDataSource1
        .UpdateParameters("id").DefaultValue = Request.QueryString("id")
        .UpdateParameters("pageContent").DefaultValue = edittor.Content
        .Update()
    End With
End Sub

问题是说

.UpdateParameters("id").DefaultValue
  

对象引用未设置为对象的实例。

我以前用这种方式(我想)。有人可以解释为什么这搞砸了 OR ,因为我注意到大多数人在SQL中直接做到了,如何以正确的方式做到这一点(即更新我的表中的条目)。

1 个答案:

答案 0 :(得分:1)

这不是最佳解决方案,但您可以尝试这个。为此,您不应该在.aspx页面中包含该参数,否则会引发错误。

第一种方法:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
           Dim id As New Parameter
        id.Direction = ParameterDirection.Input
        id.Name = "ID"
        id.DefaultValue = RubricID

        If SqlDataSource1.UpdateParameters.Contains(id) = True Or SqlDataSource1.UpdateParameters.Count = 1 Then
            SqlDataSource1.UpdateParameters.Item("ID").DefaultValue = RubricID
        Else
            SqlDataSource1.UpdateParameters.Add(id)
        End If
        SqlDataSource1.Update()     
End Sub

第二种方法:

指定参数OnUpdating SqlDataSource的事件

   Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    SqlDataSource1.Update()   
    End Sub

Protected Sub SqlDataSource1_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles SqlDataSource1.Updating
       Dim ID = New SqlParameter("@ID", CType(Page.RouteData.Values("id"), Int16))
            e.Command.Parameters.Add(ID)
    End Sub