从索引 0 处开始,初始化字符串的格式不符合规范
privatevoidbutton1_Click(objectsender,EventArgse){DBHelper.connection.Open();stringx=...
private void button1_Click(object sender, EventArgs e)
{
DBHelper.connection.Open();
string x=comboBox6.Text;
dataadapter = new SqlDataAdapter("select * from 学生信息表where " + " 性别='{0}'", x);
dataadapter.Fill(dataset, "学生信息表");
dataGridView1.DataSource = dataset.Tables["学生信息表"];
DBHelper.connection.Close();
} 展开
{
DBHelper.connection.Open();
string x=comboBox6.Text;
dataadapter = new SqlDataAdapter("select * from 学生信息表where " + " 性别='{0}'", x);
dataadapter.Fill(dataset, "学生信息表");
dataGridView1.DataSource = dataset.Tables["学生信息表"];
DBHelper.connection.Close();
} 展开
3个回答
展开全部
性别不要用 ntext 太浪费了
错误是因为字符串格式化的问题
var adapter = new SqlDataAdapter(string.Format("SELECT * FROM 学生信息表 WHERE 性别 = '{0}'", x), Connection);
错误是因为字符串格式化的问题
var adapter = new SqlDataAdapter(string.Format("SELECT * FROM 学生信息表 WHERE 性别 = '{0}'", x), Connection);
追问
那 dataadapter.Fill(dataset, "学生信息表"); 怎么改
下面是它的定义,麻烦您了,我就是想实现在Datagridview中根据combobox中的信息来显示对应的数据
private DataSet dataset = new DataSet();
private SqlDataAdapter dataadapter;
追答
那不需要这样啊,你可以将数据和界面控件分开看待:
数据源:DataTable (暂时不要使用 DataSet)
界面控件:DataGridView
var table = new DataTable("学生信息表");
var bs = new BindingSource(); // 创建 BindingSource 组件
var adapter = new SqlDataAdapter("SELECT * FROM 学生信息表", 链接对象或链接字符串);
adapter.Fill(table); // 获取数据
bs.DataSource = table; // 绑定数据
datagridview1.DataSource = bs; // 将 DataGridView 的数据源设为 BindingSource 对象
bs.Filter = string.Format("性别 = '{0}'", comboBox6.Text); // 利用 Filter 属性筛选数据
bs.Filter = null; // 取消筛选
---------------------------------------------
简单来说:
bs 作为数据处理的中间件将 table 和 dataGridView 联系起来
当 bs 对数据进行了 Filter 后,table 的数据没有发生任何改变
仅仅由 bs 根据筛选条件产生了一个 DataView 对象
由于 dataGridView 的 DataSource 为 bs,所以 dataGridView 呈现的是 bs 产生的那个 view
这里不需要任何代码的控制
最多需要刷新 (ResetBindings) 一下 DataGridView 以通知其重新呈现数据
可见控件和数据绑定后具有联动的效果,换句话说,只需要对数据源进行操作,然后刷新界面控件就可以了,不需要刻意的修改查询,进行再次填充和绑定的操作。
理解这一点对以后 WPF 编程有相当大的帮助
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询