【问题标题】:cannot load data into datagridview C# for a multitable sql query无法将数据加载到 datagridview C# 以进行多表 sql 查询
【发布时间】:2014-04-23 04:56:08
【问题描述】:

我有一个 Windows 应用程序 C#
我有一个 datagridview1 我需要检索多表数据查询的地方 在从表中检索数据时,也需要同时进行过滤 我面临的问题是数据没有被加载,虽然在 LocalWindows 显示

问题是 datagridview 中没有加载数据 我可以看到数据正在通过 Visual Studio 中的 autos watch 加载到 datagridview 中——我最后给出了输出 我做错了什么?

   //CODE
   private void getData(string selectquery)
   {
       try
       {
          // string qryText1 = @"SELECT FEE_HEAD.FEE_HEAD_NAME, FEE_AMOUNT.FEE_HEAD_AMOUNT, FEE_AMOUNT.CLASS_ID FROM FEE_AMOUNT INNER JOIN FEE_HEAD ON FEE_AMOUNT.FEE_HEAD_ID = FEE_HEAD.ID";
         SqlConnection con = new SqlConnection(@"Data Source=SRINATH-PC\SQLEXPRESS;Initial Catalog=BFMS;Integrated Security=True");

         SqlCommand command = new SqlCommand(selectquery, con);
         con.Open();
         SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
         dataAdapter1.SelectCommand = command;
         DataTable dataT = new DataTable();
         dataAdapter1.Fill(dataT);
         BindingSource bs = new BindingSource();
         bs.DataSource = dataT;
         dataGridView1.DataSource = bs;
         dataAdapter1.Update(dataT);
         dataGridView1.Refresh();          
         con.Close();
       }
       catch (SqlException ex1)
       {
           MessageBox.Show(ex1.ToString());
       }
   }

  //LOCAL WATCH VIEW    

    Count   28  int+        Current {System.Data.DataRowView}   object {System.Data.DataRowView}
    DataMember  ""  string
    RowCount    29  int
    RowHeadersBorderStyle   Raised System.Windows.Forms.DataGridViewHeaderBorderStyle

【问题讨论】:

  • 如果将dataT 绑定到dataGridView1.DataSource 会发生什么? dataGridView1.Rows.Count 的调试器会显示什么?对于dataT.Rows.Count?

标签: c# sql winforms datagridview


【解决方案1】:

代码运行良好

public Form1() { InitializeComponent(); string query = "select * from benefitplans"; getData(query); }

然后

private void getData(string selectquery)
    {
        try
        {
            // string qryText1 = @"SELECT FEE_HEAD.FEE_HEAD_NAME, FEE_AMOUNT.FEE_HEAD_AMOUNT, FEE_AMOUNT.CLASS_ID FROM FEE_AMOUNT INNER JOIN FEE_HEAD ON FEE_AMOUNT.FEE_HEAD_ID = FEE_HEAD.ID";
            SqlConnection con = new SqlConnection(@"Data Source=392;User id=sa; Password=manage@123;Initial Catalog=Benefit;Pooling=False");


            SqlCommand command = new SqlCommand(selectquery, con);


            con.Open();
            SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
            dataAdapter1.SelectCommand = command;
            DataTable dataT = new DataTable();
            dataAdapter1.Fill(dataT);
            BindingSource bs = new BindingSource();
            bs.DataSource = dataT;
            dataGridView1.DataSource = bs;
            dataAdapter1.Update(dataT);
            dataGridView1.Refresh();

            con.Close();
        }
        catch (SqlException ex1)
        {
            MessageBox.Show(ex1.ToString());
        }
    }

【讨论】:

  • 那么在这种情况下应该怎么办!是否有任何格式错误
  • 不,我只是使用您的代码并编写一个查询并将其传递给方法及其工作......再试一次,它可能对你也有用......
【解决方案2】:

尝试替换这些行

     SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
     dataAdapter1.SelectCommand = command;
     DataTable dataT = new DataTable();
     dataAdapter1.Fill(dataT);
     BindingSource bs = new BindingSource();
     bs.DataSource = dataT;
     dataGridView1.DataSource = bs;
     dataAdapter1.Update(dataT);
     dataGridView1.Refresh();          
     con.Close();

     SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
     dataAdapter1.SelectCommand = command;
     DataSet dataS = new DataSet();
     dataAdapter1.Fill(dataS);
     dataGridView1.DataSource = dataS;
     con.Close();

希望,这可能会有所帮助。

【讨论】:

  • 这没有帮助这里有没有其他方法可以使用!加载数据。**我需要它来继续项目的其他组件**
【解决方案3】:

我们需要使用显示 Datagridview 的列

       dataGridView1.Columns[0].Name = "FEE_HEAD_NAME";
       ataGridView1.Columns[0].HeaderText = "FEE_HEAD_NAME";
       dataGridView1.Columns[0].DataPropertyName = "FEE_HEAD_NAME";

       dataGridView1.Columns[1].HeaderText = "FEE_HEAD_AMOUNT";
       dataGridView1.Columns[1].Name = "FEE_HEAD_AMOUNT";
       dataGridView1.Columns[1].DataPropertyName = "FEE_HEAD_AMOUNT";

谢谢大家的回复

【讨论】:

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