【问题标题】:binding gridview with two listbox asp.net c#用两个列表框asp.net c#绑定gridview
【发布时间】:2019-05-19 12:21:49
【问题描述】:

我想将一个GridView 与两个ListBox 的值绑定。 我在GridView 中成功绑定了一个列表框值,但不知道如何同时绑定两个列表框。

 DataTable dt = new DataTable();
    dt.Columns.Add("Menu", Type.GetType("System.String"));
    dt.Columns.Add("cost", Type.GetType("System.String"));
    foreach (ListItem lst in ListBox1.Items)
    {
        if (lst.Selected)
        {
            DataRow dr = dt.NewRow();
            dr["Menu"] = lst.Text;
            dt.Rows.Add(dr);
        }

       //GridView1.DataSource = dt;
        //GridView1.DataBind();
    }

也试过这段代码,但没有用

 DataTable dt1 = new DataTable();
    dt1.Columns.Add("Menu", Type.GetType("System.String"));
  //dt1.Columns.Add("cost", Type.GetType("System.String"));
    foreach (ListItem lst in ListBox1.Items)
    {
        if (lst.Selected)
        {
            DataRow dr1 = dt1.NewRow();
            dr1["Menu"] = lst.Text;
            String strQuery = "SELECT cost FROM menu where name = '" + ListBox1.SelectedValue + "'";
           // dr1["Cost"] = lst.Value;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strQuery;
            cmd.Connection = con;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt1);
            dt1.Rows.Add(dr1);
        }

        GridView2.DataSource = dt1;
        GridView2.DataBind();
    }

【问题讨论】:

  • 向我们展示您已经编写的代码并解释为什么它不起作用。如果你已经完成了一次,为什么第二次没有工作?
  • 添加了上面的代码

标签: c# sql asp.net sql-server


【解决方案1】:

这样的东西会起作用,

    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Menu", Type.GetType("System.String"));
        dt.Columns.Add("cost", Type.GetType("System.String"));

        // capture selected item value for 1st listbox 
        foreach (ListItem lst in ListBox1.Items)
        {
            if (lst.Selected)
            {
                DataRow dr = dt.NewRow();
                dr["Menu"] = lst.Text;
                dt.Rows.Add(dr);
            }

        }

        // capture selected item value for 2nd listbox 
        foreach (ListItem lst in ListBox2.Items)
        {
            if (lst.Selected)
            {
                DataRow dr = dt.NewRow();
                dr["Menu"] = lst.Text;
                dt.Rows.Add(dr);
            }


        }

        // finally display the data to gridview 
        GridView1.DataSource = dt;
        GridView1.DataBind();


    }

您的原始代码仅在选择列表框项时创建逻辑以捕获值,因此请确保您同时选择两个列表框项,然后您将能够捕获数据表上的 2 行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多