none
怎样用CheckBoxList的多选项当GRIDVIEW显示列的方法? RRS feed

  • 问题

  • 我想用CheckBoxList 来控制GRIDVIEW里显示的数据列,就是在CheckBoxList里选什么列,就在GRIEVIEW里显示什么列
    下面是我写的,但是有错误
    报错是这样的
    ,' 附近有语法错误。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.SqlClient.SqlException: ',' 附近有语法错误。

     <asp:CheckBoxList ID="CheckBoxList1" runat="server">
                 <asp:ListItem Text="进水压力" runat="server"></asp:ListItem>
                 <asp:ListItem Text="水箱液位信号" runat="server"></asp:ListItem>
                 <asp:ListItem Text="二次供水压力" runat="server"></asp:ListItem>
                 <asp:ListItem Text="二次供水流量" runat="server"></asp:ListItem>
                </asp:CheckBoxList>
                <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

    CS页
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;

    public partial class _Default : System.Web.UI.Page
    {
        SqlConnection conn;
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string chb="";
            for (int i = 0; i <= this.CheckBoxList1.Items.Count - 1; i++)
            {
                if (this.CheckBoxList1.Items[i].Selected)
                {
                    chb += ","+this.CheckBoxList1.Items[i].Value.ToString()  ;//这是给chb赋值
                }
            }
            string sqlstr5 = "select " + chb + " from z_东站";
            conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["key"]);
            SqlDataAdapter myda5 = new SqlDataAdapter(sqlstr5, conn);
            DataSet myds5 = new DataSet();
            conn.Open();
            myda5.Fill(myds5);
            GridView1.DataSource = myds5;
            GridView1.DataBind();
            conn.Close();
        }
    }
    哪位大哥能帮我改改

    2009年4月15日 2:37

答案

  • string chb="";
            for (int i = 0; i <= this.CheckBoxList1.Items.Count - 1; i++)
            {
                if (this.CheckBoxList1.Items[i].Selected)
                {
    //                chb += ","+this.CheckBoxList1.Items[i].Value.ToString()  ;//这是给chb赋值
    chb += (chb == "" ? "" : ",") + this.CheckBoxList1.Items[i].Value.ToString();
                }
            }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 猫色色 2009年4月20日 1:19
    2009年4月15日 3:29
    版主

全部回复

  • string chb="";
            for (int i = 0; i <= this.CheckBoxList1.Items.Count - 1; i++)
            {
                if (this.CheckBoxList1.Items[i].Selected)
                {
    //                chb += ","+this.CheckBoxList1.Items[i].Value.ToString()  ;//这是给chb赋值
    chb += (chb == "" ? "" : ",") + this.CheckBoxList1.Items[i].Value.ToString();
                }
            }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 猫色色 2009年4月20日 1:19
    2009年4月15日 3:29
    版主
  • 谢谢X.X.Y老师,谢谢你的方法!
    用着挺成功,
    你能给我讲讲(chb == "" ? "" : ",") 这个是什么意思呢?
    2009年4月15日 3:42
  • 三元运算符,你查查 MSDN
    知识改变命运,奋斗成就人生!
    2009年4月15日 3:44
    版主
  • 这句话的意思是不是当chb为空时把一个控制赋给他,当chb不为空时就用,
    2009年4月15日 9:09
  • 差不多,本意是在 chb 不为空时在字段前添加 ,号 chb为空时不添加这样处理出来的字符串就是 a, b, c, d


    知识改变命运,奋斗成就人生!
    2009年4月15日 9:12
    版主
  • 谢谢X.X.Y老师
    2009年4月15日 9:14
  • 不客气


    知识改变命运,奋斗成就人生!
    2009年4月15日 9:15
    版主