微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C#中遍历一个表并在datagridview中显示结果?

如何解决如何在C#中遍历一个表并在datagridview中显示结果?

我有一张桌子和来自用户的两个输入。 我需要检查表中具有两列的那些输入,如果为true,则在datagridview中显示该行。 数据库是Access女士。

Connection error: Can't connect to local MysqL server through socket '/var/run/MysqLd/MysqLd.sock (2)'

我收到此错误: 无法将类型private void btnresult_Click(object sender,EventArgs e) { foreach (DaTarow row in crane_config.Tables["capacitytable"].Rows) { if (Convert.Todouble(crane_config.Tables["capacitytable"].Columns[2]) > Convert.Todouble(textBox1.Text)) { if (Convert.Todouble(crane_config.Tables["capacitytable"].Columns[3]) > Convert.Todouble(textBox2.Text)) { dataGridView1.DataSource = row; } } } } 的对象转换为类型System.Data.DataColumn

如果表中的值较大,则首先使用“半径”检查输入,然后使用第二个输入检查“容量”。如果容量也更大,则在datagridview中显示该行,否则转到下一行。最后,它应该显示所有通过测试的行。

System.IConvertible

解决方法

哼,您真的要循环播放吗? 我将根据条件从表中提取数据,从而节省循环。

例如这样的东西:

{
string strSQL = "SELECT [Index],Radius,Capacity FROM tblRdata " + "WHERE Radius > @PRad AND Capacity > @PCap " + "ORDER BY [Index],Capacity";
OleDbCommand cmdSQL = new OleDbCommand(strSQL,new OleDbConnection(My.Settings.AccessDB));
cmdSQL.Parameters.Add("@Prad",OleDbType.Double).Value = txtRadius.Text;
cmdSQL.Parameters.Add("@PCap",OleDbType.Double).Value = txtCapacity.Text;
OleDbDataAdapter dread = new OleDbDataAdapter(cmdSQL);
DataTable rstData = new DataTable();
dread.Fill(rstData);
GridView1.DataSource = rstData;
GridView1.DataBind();
}

此外,表中的列是从零开始的。那么,该表是否真的只有3列? 然后,您需要.Columns [1]和[2],而不是2和3(第一列为0)。

现在表可能很小,但是说,即使对于可访问50,000行的小表,执行数据拉取而不是循环整个表也会更快。

我想这取决于在代码中的何处/何时/如何加载表(数据集,或者现在是新的实体框架?)。

如果表已经加载?然后针对该表创建所谓的“视图”,它将再次允许过滤而不会循环。

因此,您可以像这样在现有表上仅使用这两行:

{
string strFilter = "Radius > " + txtRadius.Text + " AND Capacity > " + txtCapacity.Text;
DataView myview = new DataView(crane_config.Tables["capacitytable"],strFilter,"",DataViewRowState.CurrentRows);

GridView1.DataSource = myview;
GridView1.DataBind();
}

因此,视图将使您可以根据现有表进行过滤,并且代码更少,而且filter命令是字符串-无需类型转换。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。