我正在根据查询字符串值动态填充Repeater控件。 在Page_Load上,页面执行一个函数,该函数从数据库获取信息并将其加载到DataSet中,然后用于填充转发器。
问题是,在截断表后,它似乎仍然会返回一行......
这是我的代码:
Private g As New Globals
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim CommentData As DataSet = g.GetComments(Request.QueryString("i"))
' Had the page tell me how many rows were in the table
MsgBox(CommentData.Tables(0).Rows.Count.ToString)
If CommentData.Tables(0).Rows.Count = 0 Then
rptComments.Visible = False
Else
rptComments.DataSource = CommentData
rptComments.DataBind()
End If
' Heres g.GetComments()
Public Function GetComments(ByVal ArticleID As Integer) As DataSet
Dim sql As String = "SELECT [CommentID], [Username] ,[Email] ,[URL] ,[CommentText] FROM Comments " & _
"WHERE ArticleID = " & ArticleID & " AND ApprovedYN = 'Yes' AND DeletedYN = 'No'"
MyAdapter.SelectCommand = New SqlCommand(sql, conn)
MyAdapter.Fill(MyData)
Return MyData
End Function
这个想法是函数将获取与从QueryString传递给它的ArticleID关联的Comments表中的所有行,但我无法理解为什么当表中没有任何行时返回一行。< / p>
修改
我之前创建了另一个DataSet,当我添加以下内容时,我从第一个DataSet获取数据:
MsgBox(CommentData.Tables(0).Rows(0)(0).ToString)
我得到文章的标题,正如您从上面的代码中看到的那样,不应该在这个DataSet中...
有什么想法吗?
提前致谢!
答案 0 :(得分:0)
问题解决了!!!
在同一个Sub中创建了2个DataSet似乎让网站上有些东西混淆了...... 我所做的就是解决问题的方法是在使用它填充页面的内容区域之后清除第一个DataSet,请参阅以下内容:
If DataSet1 IsNot Nothing Then
DataSet1.Clear()
End If
Dim DataSet2 As DataSet = g.GetComments(Request.QueryString("i"))
....