属性
说明
Columns
包含的列的集合
DataSource
DataGridView 的数据源
ReadOnly
是否可以编辑单元格
DataGridView 中各列的主要属性
属性
说明
DataPropertyName
绑定的数据列的名称
HeaderText
列标题文本
Visible
指定列是否可见
Frozen
指定水平滚动DataGridView时列是否移动
ReadOnly
指定单元格是否为只读
1 private SqlDataAdapter dataAdapter;   // 数据适配器
2 private DataSet dataSet;   // 数据集
3
4      
5   
6 /
7   
8
9          // 窗体加载时,填充数据集
10          private void QuestionListForm_Load( object sender, EventArgs e)
11          {
12              // 查询数据库用的 SQL 语句
13              string sql = " SELECT QuestionID, Question, OptionA,
OptionB,OptionC,OptionD,Answer, Difficulty FROM Question
" ;
14              // 创建数据集对象
15              dataAdapter = new SqlDataAdapter(sql, DBHelper.connection);
16              // 创建数据集对象
17              dataSet = new DataSet( " MySchool " );
18
19              // 填充数据集
20              dataAdapter.Fill(dataSet, " Question " );   
21          
22              // 指定 DataGridView 的数据源
23              dgvQuestion.DataSource = dataSet.Tables[ " Question " ];
24          }
25
26          private void btnClose_Click( object sender, EventArgs e)
27          {
28              this .Close();
29          }
30
31          // 把修改过的数据提交到数据库
32          private void btnUpdate_Click( object sender, EventArgs e)
33          {
34              // 向用户确认操作
35              DialogResult result = MessageBox.Show( " 确实要保存修改吗? " ,
" 操作提示 " ,MessageBoxButtons.YesNo,MessageBoxIcon.Question);
36
37              if (result == DialogResult.Yes)
38              {
39                  // 自动生成用于更新的命令
40                  SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);
41
42                  // 将数据集中修改过的数据,提交到数据库
43                  dataAdapter.Update(dataSet, " Question " );
44              }            
45          }
46
47          // 重新填充数据集
48          private void btnReFresh_Click( object sender, EventArgs e)
49          {
50              // 清空原来表中的数据
51              dataSet.Tables[ " Question " ].Clear();
52              // 填充数据集
53              dataAdapter.Fill(dataSet, " Question " );