【问题标题】:How to query a dataset in C# and return the results to a datagridview?如何在 C# 中查询数据集并将结果返回到 datagridview?
【发布时间】:2017-11-11 11:16:30
【问题描述】:

我有 datagridview 显示它的数据源(库存系统的 SQL 数据库)。

我想做的是根据是否订购了某些东西等过滤 datagridview 中显示的内容......

所以我像这样填充datagridview:

  private void Form1_Load(object sender, EventArgs e)
    {
        bG_T1TableAdapter.Fill(bUZZGEEF_DBDataSet.BG_T1);
        ResizeCols();
    }

但我终生无法弄清楚如何查询数据集。

例如,我想单击一个按钮,该按钮将显示已检查有序列的所有行。

但总的来说,我想知道如何构建自己的查询。

【问题讨论】:

    标签: c# sql datagridview dataset


    【解决方案1】:

    您可以将 DataView 用于上述目的,并将过滤后的 DataView 绑定到 DataGrid。

    bG_T1TableAdapter.Fill(bUZZGEEF_DBDataSet.BG_T1);
    
    DataView dv = new DataView(bUZZGEEF_DBDataSet.BG_T1);
    dv.RowFilter = "query"; // query example = "id = 10"
    
    myDataGridView.DataSource =dv;
    

    更多信息,您可以关注here

    【讨论】:

      【解决方案2】:

      您可以使用 DataTableView RowFilter 来查询数据表

         bG_T1TableAdapter.Fill(bUZZGEEF_DBDataSet.BG_T1);
         bUZZGEEF_DBDataSet.BG_T1.DefaultView.RowFilter = "ID < 10";
      
         myDataGridView.DataSource =bUZZGEEF_DBDataSet.BG_T1.DefaultView;
      

      https://msdn.microsoft.com/en-us/library/system.data.dataview.rowfilter(v=vs.110).aspx

      【讨论】:

      • 谢谢,我不确定它是否在我原来的问题范围内,但是当我更新返回行的值时,它会从视图中消失。有没有办法阻止这种情况发生?
      • 将行过滤器设置为空字符串将清除过滤器
      【解决方案3】:

      我认为您想要的内容类似于您在下面的代码示例中看到的内容。基本上,开始在 TextBox 中输入,GridView 中的结果将被过滤,相对于在 TextBox 中输入的内容。

      using System.Data.SqlClient;
      
      public class Form1
      {
          DataSet ds = new DataSet;
          private void Form1_Load(System.Object sender, System.EventArgs e)
          {
              SqlConnection con = new SqlConnection("Data Source=name_of_your_sql_server; Integrated Security=true; Initial Catalog=name_of_your_database");
              con.Open();
              SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Categories", con);
              da.Fill(ds, "Cat");
              DataGridView1.DataSource = ds.Tables("Cat");
          }
      
          private void TextBox1_TextChanged(System.Object sender, System.EventArgs e)
          {
              ds.Tables("Cat").DefaultView.RowFilter = "[CategoryName] LIKE '*" + TextBox1.Text + "*'";
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多