我的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();
}
}
谢谢
答案 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();
}