在datagridview中选择随机记录

时间:2014-03-24 15:15:51

标签: c# datagridview

我的Windows窗体项目中有一个数据网格视图,里面装满了数据..我还有一个按钮(nextButton),点击它来浏览这些记录。有没有办法,只要单击下一个按钮,我就可以从数据网格视图中选择一个随机记录。

这是我填写datagridview的代码。

  SqlConnection conn = new SqlConnection(connection);
        SqlCommand db = new SqlCommand("select * from TblEmp where Emp_Title = 'Mr'", conn);
        SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);
        dataAdapter = new SqlDataAdapter(db);
        dataset = new DataSet();
        dataAdapter.Fill(dataset, "TblEmp");
        dataGridView1.DataSource = dataset.Tables["TblEmp"];

以下是通过记录的nextButoon的代码

void NextRecord()
{
    if ( RecordCounter; dataset.Tables[0].Rows.Count -1)
    {
        RecordCounter++;
        TxtDisplayQuestion.Text = dataset.Tables[0].Rows[ RecordCounter][Emp_Title].ToString();
    }
}

谢谢

3 个答案:

答案 0 :(得分:0)

由于命名,我假设这是WinForms,但如果我错了,请纠正我。

您可以在表单顶部定义Random类的新实例:

var r = new Random(Environment.TickCount);

然后使用以下方法从网格中访问随机行:

var randomGridRow = dataGridView.Rows[r.Next(0, dataGridView.RowCount)];

或者来自DataTable本身:

var randomTableRow = dt.Rows[r.Next(0, dt.Rows.Count)];

答案 1 :(得分:0)

这个怎么样?

void NextRecord()
{
    var rnd = new Random(DateTime.Now.Millisecond);
    var randomNumber = rnd.Next(dataset.Tables[0].Rows.Count - 1);
    TxtDisplayQuestion.Text = dataset.Tables[0].Rows[randomNumber][Emp_Title].ToString();
}

答案 2 :(得分:0)

这样就可以了。为避免两次选择同一行,该方法会记住上次选择的行,并在第二次选择同一行时尝试查找新的随机行。

private Random rnd = new Random();
private int lastSelectedIndex = -1;

void RandomRecord()
{
    int noRows = dataset.Tables[0].Rows.Count;
    int index = rnd.Next(noRows);

    while(index == lastSelectedIndex && noRows > 1) {
        index = rnd.Next(noRows);
    }

    lastSelectedIndex = index;

    TxtDisplayQuestion.Text = dataset.Tables[0].Rows[index][Emp_Title].ToString();
}