DropDownList和DataGrid结合使用时出错!(100分相送)

chinapro 2002-09-14 05:43:46
DropDownList用于根据人名进行筛选,Datagrid用于显示筛选的结果。DropDownList的第一值为"全部",代表显示所有人员信息,其余值为一个一个的人名。在执行下列代码时出错,出错部分已经标出,请问如何解决此问题?

Private Sub drpSelXM_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles drpSelXM.SelectedIndexChanged
If Me.drpSelXM.SelectedItem.Value = 0 Then
'未筛选,在Datagrid中显示所有人员信息
Me.BindData()
Else
'已筛选,在Datagrid中显示选中的人员信息
Me.BindDataByFilter()
End If
End Sub

'----------------------------------------------------------
'数据绑定
Private Sub BindData()
Dim cn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim strSql As String

cn = New OleDbConnection(ConfigurationSettings.AppSettings("cnstr"))
'选择所有人员
strSql = "select xm from table"
da = New OleDbDataAdapter(strSql, cn)
ds = New DataSet()
da.Fill(ds, "renyuan")
Me.DataGrid1.DataSource = ds.Tables("rypxjl").DefaultView
Me.DataGrid1.DataBind()
cn.Close()
End Sub

'----------------------------------------------------------
'选择筛选条件后的数据绑定
Private Sub BindDataByFilter()
Dim cn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim strSql As String

cn = New OleDbConnection(ConfigurationSettings.AppSettings("cnstr"))
'选择特定的人员
strSql = "select xm from table where " & Me.drpSelXM.SelectedItem.Value
da = New OleDbDataAdapter(strSql, cn)
ds = New DataSet()
da.Fill(ds, "renyuan")

Me.DataGrid1.DataSource = ds.Tables("rypxjl").DefaultView
'----------------------------
'----------------------------
'----------------------------
'----------------------------
'执行下面这条语句出错:(
'错误信息为:Invalid CurrentPageIndex value. It must be >= 0 and < the PageCount.
'我想可能是下列情况导致出错
'假定上一次筛选返回的记录有5页(即pagecount=5)并且用户停留在第五页上(即currentPageIndex=4),而根据本次筛选的条件产生的记录只有1页
Me.DataGrid1.DataBind()
cn.Close()
End Sub
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jtjlww 2002-09-14
  • 打赏
  • 举报
回复
在绑定之前判断数据表中的记录条数所对应的应该有多少页,然后如果页数小于当前的页码的话,那么就得修改当前页码。
suguanqun 2002-09-14
  • 打赏
  • 举报
回复
up!
Montaque 2002-09-14
  • 打赏
  • 举报
回复
da.Fill(ds, "renyuan")

Me.DataGrid1.DataSource = ds.Tables("rypxjl").DefaultView
应该是
Me.DataGrid1.DataSource = ds.Tables("renyuan").DefaultView

---------------------------------------------------------
Montaque==Digitalboy==Houyongfeng==Monkey
icyer 2002-09-14
  • 打赏
  • 举报
回复
既然知道了原因,那修改起来就方便了,修改DataGrid的CurrentPageIndex就可以了呀。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧