我正在使用以下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中直接做到了,如何以正确的方式做到这一点(即更新我的表中的条目)。
答案 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