【问题标题】:Unable to fill data grid view dynamically using stored procedure无法使用存储过程动态填充数据网格视图
【发布时间】:2014-04-19 06:09:19
【问题描述】:

我正在使用 C# win 表单和 SQL Server 2012 编写程序。在我的一个表单中,我有一个组合框、一个按钮和一个数据网格视图。我希望每次更改组合框中的值时都填充数据网格视图。

此代码不起作用:((它不返回错误)

private void button1_Click(object sender, EventArgs e)
{
        int id = Convert.ToInt32(comboBox2.SelectedValue.ToString());
        //int idc = 100;
        DataSet ptDataset = new DataSet();
        string con = ConfigurationManager.ConnectionStrings["secaloFormulaCS"].ToString(); 
        SqlConnection sqlCon = new SqlConnection(con);
        sqlCon.Open();
        SqlCommand sqlCmd = new SqlCommand("spDispProductInfo", sqlCon);
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.AddWithValue("@id", id);
        sqlCmd.ExecuteNonQuery();
        SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
        da.Fill(ptDataset);
        dataGridView2.DataSource = ptDataset;
        sqlCon.Close();
 }

【问题讨论】:

  • 确保您仅在 (!Page.IsPostBack) 条件下绑定组合框

标签: c# sql .net winforms sql-server-2012


【解决方案1】:

试试这个。

    int id = Convert.ToInt32(comboBox2.SelectedValue.ToString());
    //int idc = 100;
    DataSet ptDataset = new DataSet();
    string con = ConfigurationManager.ConnectionStrings["secaloFormulaCS"].ToString(); 
    SqlConnection sqlCon = new SqlConnection(con);
    sqlCon.Open();
    SqlCommand sqlCmd = new SqlCommand("spDispProductInfo", sqlCon);
    sqlCmd.CommandType = CommandType.StoredProcedure;
    sqlCmd.Parameters.AddWithValue("@id", id);
    SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
    da.Fill(ptDataset);
    dataGridView2.DataSource =  ptDataset.Tables[0];
    sqlCon.Close();

【讨论】:

  • 如果你真的只需要一个DataTable - 为什么要使用DataSet 然后引用ptDataset.Tables[0] ??只需从一开始就使用DataTable - 更少的开销!
【解决方案2】:

您必须使用组合框clik 的事件而不是按钮。 只需尝试将此 button1_click 事件添加到您拥有的组合框中。

【讨论】:

    【解决方案3】:

    在您的组合框的SelectedIndexChanged 事件中设置您的代码

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
            {
                DataSet ptDataset = new DataSet();
                string con = ConfigurationManager.ConnectionStrings["secaloFormulaCS"].ToString();
                SqlConnection sqlCon = new SqlConnection(con);
                sqlCon.Open();
                SqlCommand sqlCmd = new SqlCommand("spDispProductInfo", sqlCon);
                sqlCmd.CommandType = CommandType.StoredProcedure;
                sqlCmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboBox2.SelectedValue.ToString()));
                sqlCmd.ExecuteNonQuery();
                SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
                da.Fill(ptDataset);
                dataGridView2.DataSource = ptDataset;
                sqlCon.Close();
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多