比如说我有一个datatable填充到了datagrid中
里边有个字段是年份
我如何在窗体初始化的时候,将datagrid的焦点就放置在当年的那一条记录呢?

解决方案 »

  1.   

    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);
    }
      

  2.   

    我觉得应该改一下 :)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);/////
    }
      

  3.   

    谢谢楼上两位,问题我已于昨天解决
    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;
      }
      

  4.   

    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;      
                      }
      

  5.   

    /如果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。根据你绑定的对象决定。