在这里,我可以查看从数据库到网格视图的所有数据,但这些数据似乎是 unsorted
它显示了我只想显示的所有数据 display the result of a query
在 DataGridView
我试过的代码是:
private void btnmeritbsit_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(dbpath);
string query = "select Applicant_no,A_Name,Father_Name,T_Matric,O_Matric,M_Percentage,T_Inter ,O_Inter ,I_Percentage from applicantinfo order by I_Percentage desc";
con.Open();
dataGridView1.ColumnCount = sdr.FieldCount;
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
dataGridView1.Rows.Add(sdr["Applicant_no"], sdr["A_Name"], sdr["Father_Name"], sdr["T_Matric"], sdr["O_Matric"], sdr["M_Percentage"], sdr["T_Inter"], sdr["O_Inter"], sdr["I_Percentage"]);
}
con.Close();
}
我把所有的价值观都通过了 datatable
以及 dataAdapter
但什么都不管用!!卡住了!!
// DataTable dtbl = new DataTable();
// sda.Fill(dtbl);
// dataGridView1.DataSource = dtbl;
2条答案
按热度按时间cbeh67ev1#
我在另一个答案里写的,在图片里。这是使用一个vb应用程序,但这并不重要,因为步骤是相同的,实际上你不会编写多行代码
右键单击项目,添加新数据集
在曲面上单击鼠标右键,然后添加tableadapter
添加连接字符串,下一步。命名,下一个
添加一个从表中选择all的查询,其中(id列)=@id
重命名方法以添加“byid”。稍后就会明白为什么了。饰面:
右键单击表适配器,添加查询
继续选择“select that returns rows”并输入按姓氏查找用户的查询:
给新方法起个好名字。完成。保存:
转到窗体设计器,确保显示“数据源”工具面板(视图菜单)
将“用户”网格节点从数据源拖到窗体上
它为id预先创建了一个文本框,因为这是tableadapter中的第一个查询。我们把它改成姓氏。单击按钮,更改其名称,更改其显示的文本。始终确保控件名称是最新的和相关的。
你可以看到我也更改了标签,我还更改了文本框的名称(你看不到),我更改了设计器下托盘中所有内容的名称,因此它以下划线开头:
我这样做是因为vb不区分大小写,在任何语言中调用与其类型同名的变量都是一个坏主意,并且在vb中会使intellisense混淆。您不必在c#中添加前导下划线。单凭案例就足以区别对待,尽管可以说并不总是明智的:
现在我们需要修改代码。双击fillby按钮。这是密码。也许你已经有一些代码了,也许没有。确保代码使用相关输入填充表。这是这个过程中唯一真正需要你思考你在做什么以及你的变量被称为什么的部分(它们可能和我的不同)
代码可能默认为
因为它以前是为您设置的,您可以在该框中键入一个id(guid或int,my db有一个guid),但我们已将其更改为lastname。所以我们需要更改fillbyid(现在您知道为什么我们给它们合理的名称,而不是fillby1和fillby2),所以它是fillbylastname,我们需要更改代码,以便传递字符串lastname,而不是guid id
这是你唯一要写的代码。记得我在表单上用前导下划线命名我的东西,所以我的代码有前导下划线。如果你不重命名你的东西,你的代码将不会有领先的下划线
现在运行应用程序:
看看那些约翰·史密斯!当然,他们是不同的用户——每个人的id都不一样。你甚至可以在这里写下新的细节,然后按save来更新数据库。。
从一行代码中!:)
bhmjp9jg2#
只需稍作改动,就可以很好地工作:)