首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

gridview行变色有关问题

2012-02-28 
gridview行变色问题。要求是:单击gridview一行后,该行变色显示,再次单击该行,该行变回原来的颜色,如果再次

gridview行变色问题。
要求是:
单击gridview一行后,该行变色显示,再次单击该行,该行变回原来的颜色,如果再次点击的是另一行,另一行变色,同时原来选中的那行颜色不还原。即可以选中多行。
求代码……


PS:慕白大大的
e.Row.Attributes.Add( "onclick ",   "if(window.oldtr!=null){window.oldtr.runtimeStyle.cssText= ' ';}this.runtimeStyle.cssText= 'background-color:#e6c5fc ';window.oldtr=this ");
满足不了需求,或者需要修改一下。
召唤达人帮忙。
3Q.

[解决办法]
e.Row.Attributes.Add( "onmouseover ", "c=this.style.backgroundColor;this.style.backgroundColor= '#e6dcff ' ");
e.Row.Attributes.Add( "onmouseout ", "this.style.backgroundColor=c; ");
[解决办法]
先留个脚印~~
帮楼主顶下贴了..
[解决办法]
e.Row.Attributes.Add( "onclick ", "this.style.backgroundColor=(this.style.backgroundColor == '#e6c5fc ') ? '#FFFFFF ' : '#e6c5fc '; ");
[解决办法]
不好意思没看清楚

[解决办法]
e.Row.Attributes.Add( "onclick ", "this.style.backgroundColor!= " " ? ' ' : 'red '; ");
[解决办法]
关注中,顶一下
[解决办法]
mark
[解决办法]
路过,帮顶
[解决办法]
搞了半天。。
不过还是搞出来了。。

楼主需要给datagridview 设置如下属性:

ReadOnly = true; ---这上点是为了不让用户编辑单元格。因为用户编辑单元格时被编辑的单元格会变色的。。

SelectionMode = FullRowSelect; ---为了让用户一下选择一行数据。。

DefaultCellStyle 属性里的:SelectionBackColor与其中的BackColor一样,SelectionForeColor属性最好为黑色。

如果还想让您的DataGridView好看一点,就把RowHeadersVisible和AllowUserToAddRows属性都设为False


好。。关键时候来了:在您的类中加入如下代码


DataGridViewCellStyle defau ; //单元格的默认样式
DataGridViewCellStyle clicked = new DataGridViewCellStyle(); //用户点击一次后的样式
private void Form1_Load(object sender, EventArgs e)
{
DataTable tt = new DataTable();
DataColumn cc;
for (int i = 0; i < 5; i++)
{
cc = new DataColumn( "tt "+i,typeof(string));
tt.Columns.Add(cc);
}
for (int i = 0; i < 10; i++)
{
DataRow newRow = tt.NewRow();
newRow[0] = "efe ";
newRow[1] = "efe ";
newRow[2] = "efe ";
newRow[3] = "efe ";
newRow[4] = "efe ";
tt.Rows.Add(newRow);
}
this.dataGridView1.DataSource = tt; //绑定数据源

clicked.BackColor = Color.Red; //设置用户点击后的颜色为红色

defau = new DataGridViewCellStyle(this.dataGridView1.Rows[0].DefaultCellStyle);//获得默认样式
}

/// <summary>
/// CellMouseClick事件。。。。
/// </summary>
/// <param name= "sender "> </param>
/// <param name= "e "> </param>
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)


{
if (e.RowIndex > = 0)
{
DataGridViewRow clickRow = dataGridView1.Rows[e.RowIndex];

//取消行的选中。。因为选中的行,系统会自动设置背景色。。这样就会把自己设置的背景色给掩盖掉
clickRow.Selected = false;

if (clickRow.DefaultCellStyle == defau)
clickRow.DefaultCellStyle = clicked;
else
clickRow.DefaultCellStyle = defau;

//把所有的行还原,(当前点击的行除外)
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Index != e.RowIndex)
row.DefaultCellStyle = defau;
}
}
}
[解决办法]
up
[解决办法]
e.Row.Attributes.Add( "onclick ", "this.style.backgroundColor=(this.style.backgroundColor == '#e6c5fc ') ? '#FFFFFF ' : '#e6c5fc '; ");
正解
[解决办法]
留个脚印
[解决办法]
交替的话是比较难搞点!!我也希望知道!!
[解决办法]
顶啊,见过选中一行的,没见过选中多行的

热点排行