2012-09-03 89 views
0

这段代码怎么了?我想填充datagridview1中的所有用户,但datagirdview什么也没有显示。如何使用数据集将数据导入数据网格?

private void button4_Click(object sender, EventArgs e) 
{ 
    dataGridView1.AutoGenerateColumns = true; 
    dataGridView1.DataSource = db.todosUsuario("select usuario from usuarios"); 
} 

//DB class 
public DataSet todosUsuario(string query) 
{ 
    DataSet dt= new DataSet(); 
    try 
    { 
     MySqlConnection cnn = new MySqlConnection(MysqlConnect()); 
     cnn.Open(); 
     MySqlDataAdapter da = new MySqlDataAdapter(query, cnn); 
     da.Fill(dt,"Usuario"); 
     cnn.Close(); 
    } 
    catch(Exception ed) 
    { 
     MessageBox.Show(ed.ToString()); 
    } 
    return dt; 
} 

回答

1

您正在将DataGridView绑定到DataSet。
在数据集中有多个表,因此您需要指定使用DataMember属性在DataGrid中显示哪个表。 (是也当你只有在表中收集的)

dataGridView1.AutoGenerateColumns = true; 
DataSet ds = db.todosUsuario("select usuario from usuarios"); 
dataGridView1.DataMember = ds.Tables[0].TableName; 
dataGridView1.DataSource = ds; 

你可以改变的代码绑定到一个表

dataGridView1.DataSource = ds.Tables[0]; 
-1

下可以被认为是一个很大的意见,而不是答案,这就是为什么我已经回答CW。

提出的代码存在许多问题。这些代表早日失去的好习惯。

private void button4_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     dataGridView1.AutoGenerateColumns = true; 
     dataGridView1.DataSource = db.todosUsuario("select usuario from usuarios"); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString(), "Exception"); 
    } 
} 

//DB class 
public DataSet todosUsuario(string query) 
{ 
    DataSet dt = new DataSet(); 
    using (MySqlConnection cnn = new MySqlConnection(MysqlConnect())) 
    { 
     cnn.Open(); 
     using (MySqlDataAdapter da = new MySqlDataAdapter(query, cnn)) 
     { 
      da.Fill(dt, "Usuario"); 
     } 
     cnn.Close(); 
    } 
    return dt; 
} 

两者的连接和数据适配器对象实现IDisposable,并且因此应该被包裹在using块。

此外,让每个方法都关注捕获异常并不是一个好主意,尤其是当您唯一可以执行的“处理”是显示错误消息时。特别是,通过在您的数据库类中放入一个MessageBox.Show调用,您要求它在Windows窗体应用程序中运行,并且违反了关注点分离。

相反,我建议你在你的代码中放置一个非常高的异常处理。对于Windows Forms应用程序,最好在事件处理程序中保留异常处理,以免异常从事件中“逃脱”。更好的做法是在全球范围内进行这种最后手段处理,但我从来没有在WinForms应用程序中这样做过,因此无法告诉你如何。

+0

异常处理与问题究竟有什么关系? – user381624

+0

OP发布的代码显示了一个错误异常处理的例子。 –