C#!怎么在DataGridView中进行查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#!怎么在DataGridView中进行查询相关的知识,希望对你有一定的参考价值。

DataGridView的名字为Dgv,文本框名字为:Text.按钮名字为;Button.
点击按钮后,查询出来.谢谢

针对DataGridView中已进行过数据绑定,即已向DataGridView中添加了一些数据,可以结合Linq查询,并让匹配查询的行高亮显示,具体实现如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Maxes_PC_Client 
    public partial class frmWelcome : Form 
        private int beforeMatchedRowIndex = 0;
        public frmWelcome()
        
            InitializeComponent();
        
        private void frmWelcome_Load(object sender, EventArgs e) 
            this.dataGridViewInit();
        
        /// <summary>
        /// DataGridView添加数据、初始化
        /// </summary>
        private void dataGridViewInit() 
            Dictionary<String, String> map = new Dictionary<String, String>();
            map.Add("Lily", "22");
            map.Add("Andy", "25");
            map.Add("Peter", "24");
            // 在这里必须创建一个BindIngSource对象,用该对象接收Dictionary<T, K>泛型集合的对象
            BindingSource bindingSource = new BindingSource();
            // 将泛型集合对象的值赋给BindingSourc对象的数据源
            bindingSource.DataSource = map;
            this.dataGridView.DataSource = bindingSource;
        
        private void SearchButton_Click(object sender, EventArgs e) 
            if (this.KeyWord.Text.Equals("")) 
                return;
            
            // Linq模糊查询
            IEnumerable<DataGridViewRow> enumerableList = this.dataGridView.Rows.Cast<DataGridViewRow>();
            List<DataGridViewRow> list = (from item in enumerableList
                                          where item.Cells[0].Value.ToString().IndexOf(this.KeyWord.Text) >= 0
                                          select item).ToList();
            // 恢复之前行的背景颜色为默认的白色背景
            this.dataGridView.Rows[beforeMatchedRowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.White;
            if (list.Count > 0) 
                // 查找匹配行高亮显示
                int matchedRowIndex = list[0].Index;
                this.dataGridView.Rows[matchedRowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.Yellow;
                this.beforeMatchedRowIndex = matchedRowIndex;
            
        
    

参考技术A string cmd = "select * from 表名 where 查询条件='"+Text.Text+"'";
SqlCommand sql = new SqlCommand(cmd);
sql.Connection = new Connectiong("Data Source=机器名;Initial Catalog=数据库名;Integrated Security=True");
try

sql.Connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet DS = new DataSet();

adapter.SelectCommand = sql;
adapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];

catch (SqlException o)

MessageBox.Show(o.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);

finally

sql.Connection.Close();
本回答被提问者采纳
参考技术B 你这个问题有点没说清楚
DataGridView的数据如果来自数据库的话
你直接去数据库查询然后用DataGridView显示查询结果就好了
不用去DataGridView中查询吧

使用C#中的XDocument对DataGridView进行XML查询

我在应用程序中使用XML的知识是非常基本的,我也搜索了很多帖子,但我找不到我要找的东西。

我正在尝试创建一个应用程序,其中给用户一个XML文件,将其放在某个文件夹中,应用程序读取其数据并将其绑定到DataGridView(DGV)。

我的XML文件是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project>

  <PCode>18-01</PCode>
  <PName>Project A</PName>

  <AllBOQ>

      <BOQ Division="Mechanical">
        <Items>
          <Item>
            <Code>M-FF-01</Code>
            <Description>Supply and Install of Seamless Black Steel Pipes, Sch. 40, 1"</Description>
            <Quantity>50</Quantity>
            <Unit>mt</Unit>
          </Item>
          <Item>
            <Code>M-FF-02</Code>
            <Description>Supply and Install of Seamless Black Steel Pipes, Sch. 40, 2"</Description>
            <Quantity>60</Quantity>
            <Unit>mt</Unit>
          </Item>
        </Items>
      </BOQ>

      <BOQ Division="Electrical">
          <Items>
              <Item>
                <Code>E-FA-01</Code>
                <Description>Supply and Install of Fire Alarm</Description>
                <Quantity>15</Quantity>
                <Unit>nr</Unit>
              </Item>
        </Items>
      </BOQ>

  </AllBOQ>

</Project>

应用程序应在DGV中创建4列,其顺序为“代码”,“描述”,“数量”,“单位”然后使用此查询用数据填充它们

    private void lbxDivision_SelectedIndexChanged(object sender, EventArgs e)
    {

        // Get selected project XML file
        string selCode = lbxProjects.SelectedValue.ToString();
        lblTest.Text = lbxDivision.Text;
        var boqItems = from itm in selProject.Descendants("BOQ")
                       where itm.Attribute("Division").Value == lbxDivision.Text
                       select new BOQItem()
                       {
                           Code        = itm.Elements("Items").Elements("Item").Elements("Code")       .FirstOrDefault().Value,
                           Description = itm.Elements("Items").Elements("Item").Elements("Description").FirstOrDefault().Value,
                           Quantity    = itm.Elements("Items").Elements("Item").Elements("Quantity")   .FirstOrDefault().Value,
                           Unit        = itm.Elements("Items").Elements("Item").Elements("Unit")       .FirstOrDefault().Value
                       };
        dataGridView1.DataSource = boqItems.ToList();

    }

DGV正在创建4列,但它只填充了一行数据,尽管<BOQ Division="Mechanical">有2个项目

如何查询具有BOQ Division Attribute =“Mechanical”(或根据用户选择)的(代码,描述,数量,单位)下的所有项目

答案

试试这个

        var items = selProject.Descendants("BOQ")
                              .Where(boq => boq.Attribute("Division").Value == lbxDivision.Text)
                              .Descendants("Item")
                              .Select(itm => new BOQItem()
                              {
                                   Code        = itm.Elements("Code")       .FirstOrDefault().Value,
                                   Description = itm.Elements("Description").FirstOrDefault().Value,
                                   Quantity    = itm.Elements("Quantity")   .FirstOrDefault().Value,
                                   Unit        = itm.Elements("Unit")       .FirstOrDefault().Value
                              }).ToList();

以上是关于C#!怎么在DataGridView中进行查询的主要内容,如果未能解决你的问题,请参考以下文章

在C#中如何实现多条件查询并将查询结果显示在datagridview中

DataGridview查询结果为0

c#DataGridview 分页功能怎么实现

C#DataGridview如何只看到指定列的信息

c#求怎么设置datagridview的列宽

datagridview 怎么改变第一列的颜色