选择数据视图中的随机记录

本文关键字:随机 记录 数据 视图 选择 | 更新日期: 2023-09-27 17:52:37

我有一个数据网格视图在我的窗体项目,这是充满了数据。我还有一个按钮(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"];

这是nextbutton的代码它遍历记录

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

谢谢

选择数据视图中的随机记录

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

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

由于命名,我假设这是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)];

这个怎么样?

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