c# - DataGridView 不显示表 C#
问题描述
我的数据网格视图未显示数据。我希望它在运行时显示整个表和搜索特定行的搜索选项。
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DELL\source\repos\phoneBookwin\phoneBookwin\Database1.mdf;Integrated Security=True");
con.Open();
using (SqlCommand com = new SqlCommand("select * from Contacts"))
{
using (SqlDataAdapter db = new SqlDataAdapter("select * from Contacts", con))
{
DataTable View = new DataTable();
db.Fill(View);
}
}
这是用于搜索特定联系人
private void search_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DELL\source\repos\phoneBookwin\phoneBookwin\Database1.mdf;Integrated Security=True");
con.Open();
SqlDataAdapter cmd = new SqlDataAdapter("Select * from Contacts where Name = '"+searchBox.Text+"'",con);
DataTable View = new DataTable();
cmd.Fill(View);
con.Close();
}
无论我是否单击搜索按钮,数据网格视图都没有显示任何内容。
解决方案
您的代码永远不会将您填写的结果 DataTable 分配给 datagridview;它只是填满它然后把它扔掉。您需要在拨打电话 someDataGridView.DataSource = View
后拨打电话Fill
如果执行此操作后 datagridview 仍为空白,则很可能没有数据下载到数据表中。检查您已连接到正确的数据库并且该表有数据。如果您没有看到您期望的列,请检查 datagridview 的 AutoGenerateColumns 设置是否为 true
其他点,请..
- ..停止以您当前的方式编写 SQL,将文本框中的值连接起来 - 它不仅会让人搜索 O'Connor 这个名字,而且还会使您面临最常见的黑客攻击形式的风险数据库软件。阅读http://Bobby-tables.com - 你的代码应该更像:
using(var da = new SqlAdapter("SELECT * FROM t WHERE c LIKE @p") {
da.SelectCommand.Parameters.Add("@p", SqlDbType.VarChar, 4000).Value = textbox.Text;
//fill etc
}
- ..让自己熟悉 C# 命名约定。
View
应该调用view
它,因为它是本地成员,而不是可公开访问的类级别属性
推荐阅读
- python - sqlite3 扩展存储在哪里以及如何在 python 3 中加载它们?
- python - 查找包含字符串和数字的二维数组中的最小数字
- php - 通过距离 PHP 在笛卡尔平面上查找/计算最近的对象
- java - 如何从正则表达式格式在 Android 中编写科学记数法或化学公式?
- python - 在 Python 中有效地沿轴(公共)数字分配数组
- angularjs - AngularJS - 当指令更改服务中的数据时视图未更新
- python - 使用 Python 将 Excel 文件上传到 SharePoint Online
- node.js - 基于 MIME 类型的 Multer 文件过滤
- python - 将 python elasticsearch 响应转换为表或 csv
- twitter-bootstrap - 使用 Accordion 的 Scrollspy?