我用DATAGRID控件显示数据,没有问题;又做了翻页和查询也都好用,但翻完页再查询时就报错: "无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。"
请哪位高手大侠给予指点,解释,多谢!!!多谢!!!!
请哪位高手大侠给予指点,解释,多谢!!!多谢!!!!
解决方案 »
- 庖丁解牛 第二问 [DefaultProperty("TextBoxValue")] 什么作用?DefaultProperty("TextBoxValue"
- 求一正则表达式
- MYSQL的读取问题,在线等,急,大侠帮忙啊
- 怎样让一个控件的内容完全等于另一同类型控件的内容?
- RegisterStartupScript不支持变量吗,请大哥们看看
- 在用的是ORACLE数据库,不知如何使用事务。能贴一段代码吗?
- 求救!!关于asp.net页的布局问题!!
- 上传图片引发内存不足
- 怎样在web中实现可编辑的下拉框功能
- Datalist中用FindControl方法的一点问题?急!!!在线等待
- 急救!在WEB服务器上发布后总是出错,无法加载oci.dll?
- 大家帮忙看看这段代码错在哪儿??
就是你翻页时将当前的页码赋给了大于1的数,页在你重新查询时,可能只能查出1页数据,页当前的页码索引还是大于1的数,当然出错啦
你可以在查询时给datagrid的 CurrentPageIndex 重新赋值为0
就可以啦
dim i
msg.text=""
wzg.text=""
for i=0 to cx.items.count-1
if cx.items(i).selected then
msg.text &=cx.items(i).text
end if
next
msg.text &="='"&cxnr.text & "'"
wzg.text &="select * from GSM基站配置数据表 where "
wzg.text &=msg.text
dim conn as oledbconnection
dim adpt as oledbdataadapter
dim ds as dataset
dim provider="provider=microsoft.jet.oledb.4.0"
dim database="data source=" & server.mappath("gsmjzsj.mdb")
conn=new oledbconnection(provider & ";" & database)
conn.open()
adpt = new oledbdataadapter (wzg.text,conn)
ds=new dataset()
adpt.fill(ds,"GSM基站配置数据表")
mydatagrid.datasource=ds.tables("GSM基站配置数据表").defaultview
mydatagrid.databind()
conn.close()
end subsub opendatabase_and_bindtodatagrid()
dim conn as oledbconnection
dim adpt as oledbdataadapter
dim ds as dataset
dim provider="provider=microsoft.jet.oledb.4.0"
dim database="data source=" & server.mappath("gsmjzsj.mdb")conn=new oledbconnection(provider & ";" & database)
conn.open()dim sql="select * from GSM基站配置数据表 "
adpt = new oledbdataadapter ( sql,conn)
'table.defaultview.sort = sortfield.text & sorttype.text
ds=new dataset()
adpt.fill(ds,"GSM基站配置数据表")
ds.tables("GSM基站配置数据表").defaultview.sort= sortfield.text & sorttype.text
MyDataGrid.datasource=ds.tables("GSM基站配置数据表").defaultview
MyDataGrid.databind()
conn.close()end sub
你可以在查询绑定后这样
MyDataGrid.datasource=ds.tables("GSM基站配置数据表").defaultview
MyDataGrid.databind();
加:MyDataGrid.CurrentPageIndex = 0;
#region 初始化DataGrid
/// <summary>
/// 初始化DataGrid
/// </summary>
private void iniData(DataTable dt)
{
int pagesum = 0;
int intDataViewCount = dt.DefaultView.Count;
int intDataGridPageSize = dgResult.PageSize;
int intDataGridCurrentPageIndex = dgResult.CurrentPageIndex;
if(intDataViewCount % intDataGridPageSize == 0)
{
pagesum = intDataViewCount/intDataGridPageSize;
}
else
{
pagesum = intDataViewCount/intDataGridPageSize + 1;
}
if(intDataViewCount == 0)
{
pagesum =1;
}
if(intDataGridCurrentPageIndex >= pagesum)
{
intDataGridCurrentPageIndex = pagesum-1;
}
dgResult.CurrentPageIndex = intDataGridCurrentPageIndex;
}
#endregion
所以你必须在翻页前作查询,并判断查询后的记录数为多少,并求出有多少页,如果页码少于
当前的页,则将当前页赋值为0.
如下:
Dim intCount, pageCount As Integer
intCount = CInt(myds.Tables(0).Rows.Count)
If intCount < 10 Then
pageCount = 1
Else
If intCount Mod 10 <> 0 Then
pageCount = intCount \ 10 + 1
Else
pageCount = intCount / 10
End If
End If If pageCount = 1 Or dagInfo.CurrentPageIndex > pageCount - 1 Then
dagInfo.CurrentPageIndex = 0
End If