用两个列表框asp.net c#绑定gridview

Posted

技术标签:

【中文标题】用两个列表框asp.net c#绑定gridview【英文标题】:binding gridview with two listbox asp.net c# 【发布时间】: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();
    

【问题讨论】:

向我们展示您已经编写的代码并解释为什么它不起作用。如果你已经完成了一次,为什么第二次没有工作? 添加了上面的代码 【参考方案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 行。

【讨论】:

以上是关于用两个列表框asp.net c#绑定gridview的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表视图中获取数据作为字符串 C# asp.net

绑定 C#、ASP.net 后在 gridview 中添加新行

在 Asp.net C# 中创建动态控件,并缓存控件并绑定数据

asp.net中radiobutton 的问题 C#

asp.net c# gridview的居中问题

用 jQuery 设置 ASP.NET 数据绑定下拉列表的值