一个datagrid用户控件的问题 急

happyRose 2004-07-19 10:14:52
我做了一个datagrid用户控件,我绑定了一些数据,当我想根据条件进行查询时,报错,”currentPageIndex 必须小于等于0和不能大于pagecount“,mydatagrid.databind,请问各位大虾,该如何解决该问题,还有页面第一次点下一页翻看数据时,要点2次才行。具体代码如下:
Public Property DataSource() As Object
Get
Return MyDataGrid.DataSource
End Get
Set(ByVal Value As Object)
Me.MyDataGrid.DataSource = Value
End Set
End Property

Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
If (e.NewPageIndex > -1 And e.NewPageIndex < Me.MyDataGrid.PageCount) Then

MyDataGrid.CurrentPageIndex = e.NewPageIndex
Else
MyDataGrid.CurrentPageIndex = 0
End If
end sub

Sub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs)
'used by external paging UI
Dim arg As String = sender.CommandArgument

Select Case arg
Case "next"
If (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1)) Then
MyDataGrid.CurrentPageIndex += 1
TextBox2.Text = MyDataGrid.CurrentPageIndex
End If
Case "prev"
If (MyDataGrid.CurrentPageIndex > 0) Then
MyDataGrid.CurrentPageIndex -= 1
TextBox2.Text = MyDataGrid.CurrentPageIndex
End If
Case "last"
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1)
TextBox2.Text = MyDataGrid.CurrentPageIndex
Case Else
'page number
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg)
TextBox2.Text = MyDataGrid.CurrentPageIndex
End Select
End Sub
...全文
263 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyBirdInLife 2004-08-05
  • 打赏
  • 举报
回复
笨,去吃大肉,就能解决,猪啊
aboluoyuren 2004-08-05
  • 打赏
  • 举报
回复
呵呵,年轮也来抢分!
那我就不客气了~~~~~~~~~~~~~~~~~~~~~`
happyRose 2004-07-20
  • 打赏
  • 举报
回复
各位大虾你们的帮法不行,还是会出错,如下是所有的代码,大虾帮我看看。 急急
Public Class EasyDataGrid
Inherits System.Web.UI.UserControl
'返回datasource
Public Property DataSource() As Object
Get
Return MyDataGrid.DataSource
End Get
Set(ByVal Value As Object)
Me.MyDataGrid.DataSource = Value
End Set
End Property
'添加带连接的列
Public Sub AddHyperLinkCol(ByVal FieldName As String, ByVal Title As String, ByVal UrlField As String, ByVal Navigate As String)
Dim HLinkCol As New HyperLinkColumn
HLinkCol.DataTextField = FieldName
HLinkCol.HeaderText = Title
HLinkCol.DataNavigateUrlField = UrlField
HLinkCol.NavigateUrl = Navigate
HLinkCol.DataNavigateUrlFormatString = Navigate
MyDataGrid.Columns.Add(HLinkCol)
End Sub
'
Function pagecount() As Integer
Return MyDataGrid.PageCount
End Function
'添加绑定的列
Public Sub AddBoundCol(ByVal FieldName As String, ByVal Title As String)
Dim BCol As New BoundColumn
BCol.DataField = FieldName
BCol.HeaderText = Title
MyDataGrid.Columns.Add(BCol)
End Sub
'DataBind方法
Public Overrides Sub DataBind()
MyDataGrid.DataBind()
End Sub
Public Function setPage(ByVal PageStyle As Boolean)
If PageStyle = True Then
MyDataGrid.PagerStyle.Mode = PagerMode.NextPrev
End If
End Function
'//////////////////////////////
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
btnFirst.Text = "最首页"
btnPrev.Text = "前一页"
btnNext.Text = "下一页"
btnLast.Text = "最后页"
If Not Page.IsPostBack Then
MyDataGrid.CurrentPageIndex = 0
TextBox2.Text = MyDataGrid.CurrentPageIndex
End If

End Sub
Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
'Dim startIndex As Integer
'startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize
'MyDataGrid.CurrentPageIndex = e.NewPageIndex
'ShowStats()

'++++++++++++++++++ 修改的代码
If (e.NewPageIndex > -1 And e.NewPageIndex < MyDataGrid.PageCount) Then

MyDataGrid.CurrentPageIndex = e.NewPageIndex
Else
MyDataGrid.CurrentPageIndex = 0
End If
ShowStats()
End Sub

Sub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs)
'used by external paging UI
Dim arg As String = CType(sender, LinkButton).CommandArgument
Select Case arg
Case "next"
If (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1)) Then
MyDataGrid.CurrentPageIndex += 1
TextBox2.Text = MyDataGrid.CurrentPageIndex
End If
'MyDataGrid.CurrentPageIndex = 0
Case "prev"
If (MyDataGrid.CurrentPageIndex > 0) Then
MyDataGrid.CurrentPageIndex -= 1
TextBox2.Text = MyDataGrid.CurrentPageIndex
End If
'MyDataGrid.CurrentPageIndex = 0
Case "last"
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1)
TextBox2.Text = MyDataGrid.CurrentPageIndex
'MyDataGrid.CurrentPageIndex = 0
Case Else
'page number
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg)
TextBox2.Text = MyDataGrid.CurrentPageIndex
'MyDataGrid.CurrentPageIndex = 0
End Select
ShowStats()
End Sub
Sub GoPage(ByVal sender As Object, ByVal e As EventArgs)
MyDataGrid.CurrentPageIndex = TextBox1.Text
lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex).ToString() + " 页"
TextBox1.Text = ""
End Sub
Sub ShowStats()
lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页"
lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页"
End Sub
end class
Tony8002003 2004-07-19
  • 打赏
  • 举报
回复
代码没问题。把它放到第一个事件里
goody9807 2004-07-19
  • 打赏
  • 举报
回复
新页码对DataGrid重新绑定数据源
webdiyer 2004-07-19
  • 打赏
  • 举报
回复
点击查询按钮时把DataGrid的CurrentPageIndex设为0
hnliruoyu 2004-07-19
  • 打赏
  • 举报
回复
按 acewang(龍芯*Inside!) 的做,就可以解决
acewang 2004-07-19
  • 打赏
  • 举报
回复
1.查询时先将DataGrid的当前页置0
2.翻页时,赋完新页码对DataGrid重新绑定数据源
13880079673 2004-07-19
  • 打赏
  • 举报
回复
你的问题的错误提示是说你访问的行不存在,这有可能是你在操作过程中删除了一些行,或者对结果集进行了一些错误的操作。解决办法最好是你在执行其他的操作后,重新绑定数据源到DataGrid控件(把你的查询条件写在数据库查询语句里面)
zl13 2004-07-19
  • 打赏
  • 举报
回复
没看懂,不知道对你有没有用
http://www.blueidea.com/tech/program/2003/894.asp
softchao 2004-07-19
  • 打赏
  • 举报
回复
注意:翻页时,赋完新页码对DataGrid重新绑定数据源

62,242

社区成员

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

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

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

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