65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 C# 中使用 SQL 语句填充 DataGridView、GridView

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.97/5 (43投票s)

2006年5月26日

2分钟阅读

viewsIcon

796839

如何在 C# 中使用 SQL 语句填充 DataGridView、GridView

引言

如何在 C# 中使用 SQL 语句填充 DataGridView、GridView

 

在开发过程中,我们总是希望代码尽可能简单且无错误。在 C# 中,用于基于 Web 应用程序的 GridView 和DataGridView 用于基于 Windows 窗体应用程序的使用方式和行为有所不同。 看起来微软有两个不同的团队分别开发 GridView 和DataGridView。  这就是我撰写本文来分享每个控件的编码的原因。 这里我使用 MS Visual Studio 2005。

 

I. 使用 SQL 语句填充基于 Web 应用程序的 GridView 控件

 

让我们从工具箱中将 GridView1 控件放在 Web 窗体上。 编码很简单,如下所示

 

protected void Page_Load(object sender, EventArgs e)

{

 

string strSQLconnection = "Data Source=dbServer;Initial Catalog=testDB;Integrated Security=True";

SqlConnection sqlConnection = new SqlConnection(strSQLconnection);

SqlCommand sqlCommand = new SqlCommand("select * from table1", sqlConnection);

sqlConnection.Open();

 

SqlDataReader reader = sqlCommand.ExecuteReader();

       

GridView1.DataSource = reader;

GridView1.DataBind();

}

 

运行代码,您可以看到结果。 但是,当您在以下部分中看到 DataGridView 的数据绑定时,它会有很大不同。

 

 

II. 使用 SQL 语句填充基于 Windows 窗体的 DataGridView 控件

 

当我在 MS Visual Studio 2005 中使用 C# 中的 DataGridView 控件时,我发现 DataGridView 控件不太友好。 基于 Windows 窗体的 DataGridView 控件与基于 Web 的 GridView 控件不同。 DataGridView 没有 DataBind() 方法。  我花了好几天才弄清楚。

逻辑如下

  1. 从 SQL 语句或存储过程创建数据集
  2. 创建一个表来保存此数据集
  3. 创建一个 BindingSource 并将此表与此 BindingSource 绑定
  4. 然后将此 BindingSource 与 GridView 控件绑定。

 

这看起来很简单。 但我发现它非常有效且无错误。

 

让我们从工具箱中将 DataGridView 控件和 BindingSource 控件放在 Windows 窗体上。 让我们将 DataGridView 控件命名为 dbGridView,BindingSource 控件命名为 dbBindSource。 让我们应用以下代码

 

private void Form1_Load(object sender, EventArgs e)

{

string strCon ="Data Source=dbServer;Initial Catalog=testDB;Integrated Security=True";

string strSQL = “select * from table1”;

 

SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, strCon);

SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

 

// 填充新数据表并将其绑定到 BindingSource。

DataTable table = new DataTable();

table.Locale = System.Globalization.CultureInfo.InvariantCulture;

dataAdapter.Fill(table);

dbBindSource.DataSource = table;

 

// 调整 DataGridView 列的大小以适应新加载的内容。

dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

// 您可以使其网格只读。

dbGridView.ReadOnly = true; 

// 最后将数据绑定到网格

dbGridView.DataSource = dbBindSource;

}

 

现在我们编译并运行它。 您可以在网格中看到数据。

 

如果您有任何意见或问题,可以通过以下方式与我联系hong_wei_li@yahoo.com

 

享受 C# 和快乐编码!

- Hongwei Li

 

 

 

© . All rights reserved.