偶有一个DataGrid控件,一个文本框,一个按钮。想单击按钮时定位到列表里面,当前文本框中ID的行。下面是我的代码:
InitGridStyle();//重新绑定(因为需要改变数据)
dataGrid1.Select(index);
dataGrid1.CurrentRowIndex = index;
但当列表控件中数据太多,出现滚动条的时候,滚动条就定位到顶端了。
郁闷中,有没有哪位高手做过的,帮帮忙啊!项目急啊!

解决方案 »

  1.   

    这个应该不难吧。关键是要考虑你的DataGrid还有可能有分页情况。
      

  2.   

    下面是我的InitGridStyle()方法,里面主要是根据数据的更改修改颜色。
    private void InitGridStyle()
    {
    dataGrid1.TableStyles.Clear();
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.AllowSorting = false;
    ts1.MappingName = m_mobileDataTable.TableName;
    ts1.AlternatingBackColor = Color.LightGray;
    foreach (DataColumn eachCol in m_mobileDataTable.Columns)
    {
    DataGridColoredTextBoxColumn TextCol1 = new DataGridColoredTextBoxColumn();
    TextCol1.MappingName = eachCol.ColumnName;
    TextCol1.HeaderText = eachCol.ColumnName;
    TextCol1.Width = dataGrid1.Width/5;
    //设置变色行的条件以及前景和背景色
    DataGridColoredTextBoxColumnObject oo = new DataGridColoredTextBoxColumnObject();
    oo.ChangedRows = m_mobileDataTable.Select("扫描状态='信息正确'");
    oo.BackBrush = new SolidBrush(Color.White);
    oo.ForeBrush = new SolidBrush(Color.Green); DataGridColoredTextBoxColumnObject oo1 = new DataGridColoredTextBoxColumnObject();
    oo1.ChangedRows = m_mobileDataTable.Select("扫描状态='新增设备'");
    oo1.BackBrush = new SolidBrush(Color.White);
    oo1.ForeBrush = new SolidBrush(Color.Red); DataGridColoredTextBoxColumnObject oo2 = new DataGridColoredTextBoxColumnObject();
    oo2.ChangedRows = m_mobileDataTable.Select("扫描状态='已经改变'");
    oo2.BackBrush = new SolidBrush(Color.White);
    oo2.ForeBrush = new SolidBrush(Color.Blue); TextCol1.SetRowsColor(new DataGridColoredTextBoxColumnObject[] {oo, oo1,oo2});
    ts1.GridColumnStyles.Add(TextCol1);
    }
    dataGrid1.TableStyles.Add(ts1);
    dataGrid1.SetDataBinding(m_mobileDataTable, "");
    dataGrid1.Update();
    }
      

  3.   

    必须继承DataGrid才行
    public class DataGridEx:DataGrid
    {
    public DataGridEx()
    {} public void ScrollToRow(int row)
    {
    this.GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, row));
    } }