DataGridView的checkbox及DataTable问题~~~~

SHIMMER8711 2009-01-05 06:05:35
我把问题及我想用datagridview控件达到的效果描述一下:
datagridview的结构:
首列是Checkbox列,第二列是DataGridViewLinkColumn(因为这里面会显示网址,所以用这个),第3,4,5列是CheckBox列,第6列是TextBox列。
1.当首列的CheckBox列中的CheckBox为选中状态时,设置第六列的textbox为可用状态(readonly为false),当为未选中状态时,则设置readonly为true. 初时,我用CellClick事件来实现,但这个实现有问题:会引发第3,4,5列(CheckBox列)的CellClick事件
我想的是能不能动态添加这个CheckBox,单独定制其CheckedChange事件,但不知道具体怎么做?

2.第二列的值(即网址)必须动态添加:我用了一个DataTable来实现,可是问题来了:如果我事先设好第二列是Link列,则datatable的值会在datagridview控件里另列一列而不是将值赋给第二列,可如果我不设好,而直接用datatable加载数据,则无法设置第二列为DataGridViewLinkColumn列。
说白了:我想知道除了用datatable加载datagridview第二列的值,我能否手动设置第二列的值(即一个一个单元格添加)。
我用以下代码设置没用:
for(int i=0;i<datagridView1.RowsCount;i++)
dataGridView1.Rows[i].Cells[1].Value="http://www.sina.com";


3.是一个奇怪的问题:我用dataGridView1.Rows[0].Cells[1].ReadOnly=false;语句设置一个单元格的readonly属性,可结果这一列的readonly属性全部为false(我开始设置该列属性为true)


谢谢大家关注,敬请高手~~~
我实在是头大了~~·
...全文
287 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SHIMMER8711 2009-01-06
  • 打赏
  • 举报
回复
恩,顺便说一下:我用的是winform开发,不是用的网站
wangping_li 2009-01-05
  • 打赏
  • 举报
回复
1、你可以使用dataGridView的CellContentClick事件

private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

if (e.ColumnIndex == 0 && e.RowIndex != -1)//当你点击的是第1列时才执行下面的内容
{
if(dataGridView.Rows[e.RowIndex].Cells[0].EditedFormattedValue.ToString()=="true")
{
//选中状态时你想执行的内容
}
}

}


2、你说你用以下代码设置第二列的值没用,这你就得自己好好设断点跟踪下了,看看到底怎么赋上去值的,自己添加值是肯定行的
可以看看MSDN的方法:http://forums.microsoft.com/MSDN/MigratedForum.aspx?siteid=1&PostID=977920

3、你说的设置一个单格为只读时,整列都为只读了,肯定是你设置错了,我测试了一下,点击buttnon1就把第一行的第一个单元格设为只读是可以的

private void button1_Click(object sender, EventArgs e)
{
dataGridView1.EndEdit();
dataGridView1.Rows[0].Cells[0].ReadOnly = true;
MessageBox.Show(dataGridView1.Rows[0].Cells[0].ReadOnly.ToString());
}
yyq136 2009-01-05
  • 打赏
  • 举报
回复
用OnRowDataBound事件可以达到你所想的
具体用法参考msdn
cpio 2009-01-05
  • 打赏
  • 举报
回复

这些应该都用客户端脚本做,要不然的话,效率太低了
zqlv 2009-01-05
  • 打赏
  • 举报
回复
dataGridView1.Rows[0].Cells[1].ReadOnly=false 这没有必要吧
1.当首列的CheckBox列中的CheckBox为选中状态时,设置第六列的textbox为可用状态(readonly为false),当为未选中状态时,则设置readonly为true. 初时,我用CellClick事件来实现,但这个实现有问题:会引发第3,4,5列(CheckBox列)的CellClick事件
将readonly替换为 Enable试试 CellClick事件结合AJAX的updatepanle
DataGridViewLinkColumn列 可以赋值吗?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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