Datagrid自动向下滚动以选择行C#

时间:2014-03-19 07:40:36

标签: c# datagrid compact-framework windows-ce c#-2.0

我正在使用数据网格来获取我的应用的视图。

我需要能够根据文本框(txtpallet)的输入选择并显示一行。

数据网格有一个滚动条。我能够突出显示我想要的行,但用户仍然需要向下滚动它。

我希望datagrid自动向下滚动到我选择的行。

我不知道该怎么做。我现在已经挣扎了太长时间,并希望得到一些帮助。

我做了一个小测试应用。请参阅下面的代码。

我在设备应用程序(Windows CE)中使用c#.net 2.0紧凑框架

private void populateGrid()
    {
        try
        {
            string sub = "my connection string";

            OracleConnection conn = new OracleConnection(sub);
            string query;
            query = "Select emp_id_no,emp_username from dc_emp order by emp_id_no";
            {
                conn.Open();

                using (OracleDataAdapter a = new OracleDataAdapter(query, conn))
                {
                    DataTable t = new DataTable();
                    a.Fill(t);

                    dgSku.TableStyles.Clear();
                    DataGridTableStyle tableStyle = new DataGridTableStyle();
                    tableStyle.MappingName = t.TableName;

                    foreach (DataColumn item in t.Columns)
                    {
                        DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn();
                        tbcName.Width = 80;
                        tbcName.MappingName = item.ColumnName;
                        tbcName.HeaderText = item.ColumnName;
                        tableStyle.GridColumnStyles.Add(tbcName);
                    }
                    dgSku.TableStyles.Add(tableStyle);

                    dgSku.DataSource = t;

                    DataRow[] datarow = t.Select("emp_username like '" + txtpallet.Text + "' ");

                    foreach (DataRow dr in datarow)
                    {
                        MessageBox.Show("Index is " + dr.Table.Rows.IndexOf(dr));
                        dgSku.Select(dr.Table.Rows.IndexOf(dr));
                    }
                }
            }
            conn.Close();
        }
        catch (OracleException x)
        {
            MessageBox.Show("" + x);
        }
    }

以下是两个例子: A)在列表顶部选择一些东西 B)在某处选择一些东西

A)

enter image description here

B)

enter image description here

2 个答案:

答案 0 :(得分:2)

我明白了。您需要获取Row索引,我在顶部的代码中执行此操作。然后只需使用:

  

dgSku.CurrentRowIndex = dr.Table.Rows.IndexOf(dr);

答案 1 :(得分:0)