在datagridview绑定数据后按钮1设置后4行隐藏,按钮2设置前4行隐藏,来实现上面的功能,但是我单独点击按钮1或者按钮2时显示正常,连续点击按钮1和按钮2时后一个按钮处就会报错(先1后2或先2后1都会报错),我查找原因时发现点击后面那个按钮时dataGridViewX1.Rows.Count为0,我实在找不出原因,麻烦高手指点一下;代码如下:
按钮1和按钮2代码相同就是一个设置不同,代码如下:
//绑定数据
dataGridViewX1.Columns.Clear();
ocn.BindData("ports");
dataGridViewX1.DataSource = ocn.db_ds.Tables["ports"];
//设置全部可见
for (int i = 0; i < ocn.db_ds.Tables["ports"].Rows.Count; i++)
{
dataGridViewX1.Rows[i].Visible = true;
//此处报错说:索引超出范围。必须为非负值并小于集合大小。
}
//设置不可见,按钮1时显示DAUID=1的行,按钮2时显示DAUID=2的几行。
CurrencyManager cm = (CurrencyManager)BindingContext[dataGridViewX1.DataSource];
cm.SuspendBinding();
OleDbDataReader odr = ocn.db_cmd.ExecuteReader();
int d = 0;
while (odr.Read())
{
if (Convert.ToInt32(odr["DAUID"].ToString()) != 1)
{
dataGridViewX1.Rows[d].Visible = false;
}
d++;
}
cm.ResumeBinding();
notSortable();//禁用排序
7 个解决方案
#1
dataGridViewX1.DataSource = ocn.db_ds.Tables["ports"];
下边调用dataGridViewX1.DataBind() 试下
下边调用dataGridViewX1.DataBind() 试下
#2
DataGridViewX”并不包含“DataBind”的定义
#3
在绑定时搞定吧 点击按钮1时把前4条数据给gridview 点击按钮2时把后四条个gridview就行了 也不用隐藏
#4
去掉 dataGridViewX1.Columns.Clear();
试试
试试
#5
程序中还有别的地方用到这个table,所以我是一次性把这个table读到dataset中的,所以才选择这么做~~
#6
这个不行,我试过了的~~
#7
问题已经解决了,在绑定前加一行数据清空 dataGridViewX1.DataSource = null;就可以了,具体原因我也不清楚,但是问题已经解决了~~
#1
dataGridViewX1.DataSource = ocn.db_ds.Tables["ports"];
下边调用dataGridViewX1.DataBind() 试下
下边调用dataGridViewX1.DataBind() 试下
#2
DataGridViewX”并不包含“DataBind”的定义
#3
在绑定时搞定吧 点击按钮1时把前4条数据给gridview 点击按钮2时把后四条个gridview就行了 也不用隐藏
#4
去掉 dataGridViewX1.Columns.Clear();
试试
试试
#5
程序中还有别的地方用到这个table,所以我是一次性把这个table读到dataset中的,所以才选择这么做~~
#6
这个不行,我试过了的~~
#7
问题已经解决了,在绑定前加一行数据清空 dataGridViewX1.DataSource = null;就可以了,具体原因我也不清楚,但是问题已经解决了~~