关于DataGrid的记录定位 比如说我有一个datatable填充到了datagrid中里边有个字段是年份我如何在窗体初始化的时候,将datagrid的焦点就放置在当年的那一条记录呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void button2_Click(object sender, System.EventArgs e) { for(int i=0;i<this.dataGrid1.VisibleRowCount;i++) { if(this.dataGrid1[i,0].ToString()=="100")//年份在dataGrid1的什么地方就直接把列的位置替换掉(把0替掉) { n=i; return; } } this.dataGrid1.Select(n); } 我觉得应该改一下 :)private void button2_Click(object sender, System.EventArgs e){ for(int i=0;i<this.dataGrid1.VisibleRowCount;i++) { if(this.dataGrid1[i,0].ToString()=="100")//年份在dataGrid1的什么地方就直接把列的位置替换掉(把0替掉) { n=i; break;///// } } dataGrid1.CurrentCell=new DataGridCell(n,0); this.dataGrid1.Select(n);/////} 谢谢楼上两位,问题我已于昨天解决datagrid的select方法只是选中该行,并不能定位小箭头那个焦点吧?起先我也用的是楼上的方法,不过效果不佳下面是我用的代码:DateTime currentTime = new DateTime();currentTime = DateTime.Now; for(int k =0;k<datatable.Rows.Count;k++) { if( datatable.Rows[k][2].ToString() == currentTime.Year.ToString() ) dataGrid1.CurrentRowIndex = k; } private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { DateTime currentTime = new DateTime();currentTime = DateTime.Now; if( e[2].ToString() == currentTime.Year.ToString() ) e.Item.BackColor = Color.Green; } /如果DataGrid只是帮定一个表,CurrencyManager bindingManager = (CurrencyManager)this.BindingContext[this.DataGrid1.DataSource];//如果多个表,比如DataSet,CurrencyManager bindingManager = (CurrencyManager)this.BindingContext[this.DataGrid1.DataSource,this.DataGrid1.DataMember];//如果你定位在最后一条 bindingManager.Position = bindingManager.Count-1;如果是符合条件的一条,那你遍历bindingManager.List集合,得到符合记录的索引再设置.bindingManager.List[i]可以转换成DataRow或DataRowView。根据你绑定的对象决定。 游戏外挂,GDI+画红色准心,如何屏幕画红点不闪烁? C#智能设备项目--条码扫描的问题 C#更新问题?求解 只有这么点分了 Ajax异步刷新问题? 请问用C#写一个C/S结构的程序能够在微秒级记录数据到数据库吗?? C# winform中使用SetParent API函数的窗体中ToolTip的show不出来 测试webservice 地址是否可用或存在的问题! VS2005安装部署项目任何在注册表项获得执行文件的目录 紧急:在WinForm中,怎么发送邮件? .net 工具推荐 一个WINFORM的的简单问题 如何获取系统目录!只有10分了,大家帮忙下!
{
for(int i=0;i<this.dataGrid1.VisibleRowCount;i++)
{
if(this.dataGrid1[i,0].ToString()=="100")//年份在dataGrid1的什么地方就直接把列的位置替换掉(把0替掉)
{
n=i;
return;
}
}
this.dataGrid1.Select(n);
}
{
for(int i=0;i<this.dataGrid1.VisibleRowCount;i++)
{
if(this.dataGrid1[i,0].ToString()=="100")//年份在dataGrid1的什么地方就直接把列的位置替换掉(把0替掉)
{
n=i;
break;/////
}
}
dataGrid1.CurrentCell=new DataGridCell(n,0);
this.dataGrid1.Select(n);/////
}
datagrid的select方法只是选中该行,并不能定位小箭头那个焦点吧?
起先我也用的是楼上的方法,不过效果不佳下面是我用的代码:DateTime currentTime = new DateTime();
currentTime = DateTime.Now;
for(int k =0;k<datatable.Rows.Count;k++)
{
if( datatable.Rows[k][2].ToString() == currentTime.Year.ToString() )
dataGrid1.CurrentRowIndex = k;
}
{
DateTime currentTime = new DateTime();
currentTime = DateTime.Now;
if( e[2].ToString() == currentTime.Year.ToString() )
e.Item.BackColor = Color.Green;
}
CurrencyManager bindingManager = (CurrencyManager)this.BindingContext[this.DataGrid1.DataSource];
//如果多个表,比如DataSet,
CurrencyManager bindingManager = (CurrencyManager)this.BindingContext[this.DataGrid1.DataSource,this.DataGrid1.DataMember];
//如果你定位在最后一条
bindingManager.Position = bindingManager.Count-1;
如果是符合条件的一条,
那你遍历bindingManager.List集合,得到符合记录的索引再设置.
bindingManager.List[i]可以转换成DataRow或DataRowView。根据你绑定的对象决定。