id name classid
1  音乐1   1
2  音乐2   1
3  电影1   2
4  文学1   3
5  文学2   3
---------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using System.Configuration;/// <summary>
/// Class1 的摘要说明
/// </summary>
public partial class _Default:System.Web.UI.Page
{
    private string connectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString;
    private static DataSet ds;
    private void Page_Load(object sender, EventArgs e)
    {
        InitFilter();
        ds = GetDataSet();
    }
    private void InitFilter()
    {
        ceshiList.Items.Clear();
        classList.Items.Add(new ListItem("全部", "-1"));
        classList.Items.Add(new ListItem("音乐", "0"));
        classList.Items.Add(new ListItem("文学", "1"));
        classList.Items.Add(new ListItem("电影", "2"));
    }
    private DataSet GetDataSet()
    {
        SqlConnection myConnection = new SqlConnection(connectionString);
        string cmdtext = "Select * from ceshi";
        SqlDataAdapter myda = new SqlDataAdapter(cmdtext, myConnection);
        DataSet ds = new DataSet();
        try
        {
            myConnection.Open();
            myda.Fill(ds, "ceshi");
            ceshiList.DataSource = ds.Tables["ceshi"].DefaultView;
            ceshiList.DataTextField = "name";
            ceshiList.DataValueField = "id";
            ceshiList.DataBind();
        }
        catch (SqlException sqlex)
        {
            Response.Write(sqlex.Message);
        }
        finally
        {
            myConnection.Close();
        }
        return ds;
    }
    protected void classList_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataView dv = ds.Tables["ceshi"].DefaultView;
        if (ceshiList.SelectedItem.Text == "全部")
        {
            dv.RowFilter = "name like '*'";
        }
        else if(ceshiList.SelectedItem.Text =="音乐")
        {
            dv.RowFilter = "classid = 1";
        }
        else if (ceshiList.SelectedItem.Text == "文学")
        {
            dv.RowFilter = "classid = 2";
        }
        else if (ceshiList.SelectedItem.Text == "电影")
        {
            dv.RowFilter = "classid = 3";
        }
        ceshiList.DataSource = dv;
        ceshiList.DataTextField = "name";
        ceshiList.DataValueField = "id";
        ceshiList.DataBind();
    }
}
---------
当我选择音乐的时候就出现标题的错误,请大伙解决一下

解决方案 »

  1.   

    ASPX的部分代码是:
    <asp:DropDownList ID="classList" runat="server" AutoPostBack="True" Width="400px" OnSelectedIndexChanged="classList_SelectedIndexChanged">
            </asp:DropDownList><br />
            <asp:ListBox ID="ceshiList" runat="server" Width="400px" Height="300px">
    --------------
    找了很多这样的帖子,还是没有解决,-_-!!
      

  2.   

    调试一下,看看是在那个地方报的异常,确定一下表里边是不是有字段 name  和 id
      

  3.   

      DataView dv = ds.Tables["ceshi"].DefaultView; 
            if (ceshiList.SelectedItem.Text == "全部") 
            { 
                dv.RowFilter = "name like  '* '"; 
            } 
    ----------------------
    错误是在这个地方,就是选择音乐或其他的时候,开始报错
      

  4.   

    你应该看看ceshi表中“音乐”这条记录对应的id字段是不是“0”,还是有空格什么的
    还有
    Page_Load中的那段代码放在
    if(!Page.IsPostBack)
    {
    }
      

  5.   

    如果选择其他标题时也有这种错误的话,那么在PAGE_LOAD里面要重新写些代码
      

  6.   

    选择其他也报错,比如电影什么的,音乐ID对应1,文学ID对应2,我最上面有个表
    ---------------
    重新写代码,具体是指什么
      

  7.   

    //ceshiList改为classList
    if (classList.SelectedItem.Text == "全部") 
            { 
                dv.RowFilter = "name like  '* '"; 
            }
            else if (classList.SelectedItem.Text == "音乐") 
            { 
                dv.RowFilter = "classid = 1"; 
            }
            else if (classList.SelectedItem.Text == "文学") 
            { 
                dv.RowFilter = "classid = 2"; 
            }
            else if (classList.SelectedItem.Text == "电影") 
            { 
                dv.RowFilter = "classid = 3"; 
            } 
      

  8.   

        private void InitFilter() 
        { 
            classList.Items.Clear(); 
            classList.Items.Add(new ListItem("全部", "-1")); 
            classList.Items.Add(new ListItem("音乐", "0")); 
            classList.Items.Add(new ListItem("文学", "1")); 
            classList.Items.Add(new ListItem("电影", "2")); 
        } 
    这个里面的要要改
    别搞混了
      

  9.   

    private string connectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString; 
        private static DataSet ds; 
        private void Page_Load(object sender, EventArgs e) 
        { 
           if(!Page.IsPostBack)
           {
            ds = GetDataSet(); 
           } 
        } 
        //private void InitFilter() 
        //{ 
        //    ceshiList.Items.Clear(); 
        //    classList.Items.Add(new ListItem("全部", "-1")); 
        //    classList.Items.Add(new ListItem("音乐", "0")); 
        //    classList.Items.Add(new ListItem("文学", "1")); 
        //    classList.Items.Add(new ListItem("电影", "2")); 
        //} 
        private DataSet GetDataSet() 
        { 
            SqlConnection myConnection = new SqlConnection(connectionString); 
            string cmdtext = "Select * from ceshi"; 
            SqlDataAdapter myda = new SqlDataAdapter(cmdtext, myConnection); 
            DataSet ds = new DataSet(); 
            try 
            { 
                myConnection.Open(); 
                myda.Fill(ds, "ceshi"); 
                ceshiList.DataSource = ds.Tables["ceshi"].DefaultView; 
                ceshiList.DataTextField = "name"; 
                ceshiList.DataValueField = "id"; 
                ceshiList.DataBind(); 
            } 
            catch (SqlException sqlex) 
            { 
                Response.Write(sqlex.Message); 
            } 
            finally 
            { 
                myConnection.Close(); 
            } 
            return ds; 
        } 
        protected void classList_SelectedIndexChanged(object sender, EventArgs e) 
        { 
           // DataView dv = ds.Tables["ceshi"].DefaultView; 
            if (ceshiList.SelectedItem.Text == "全部") 
            { 
                dv.RowFilter = "name like  '* '"; 
            } 
            else if(ceshiList.SelectedItem.Text =="音乐") 
            { 
                dv.RowFilter = "classid = 1"; 
            } 
            else if (ceshiList.SelectedItem.Text == "文学") 
            { 
                dv.RowFilter = "classid = 2"; 
            } 
            else if (ceshiList.SelectedItem.Text == "电影") 
            { 
                dv.RowFilter = "classid = 3"; 
            } 
           // ceshiList.DataSource = dv; 
           // ceshiList.DataTextField = "name"; 
           // ceshiList.DataValueField = "id"; 
           // ceshiList.DataBind(); 
        } 

      

  10.   

    以及 
           if (!IsPostBack)
            {
                InitFilter();
            }
      

  11.   

    哦,应该是ceshiList写错一个了,呵呵,我现在还不可以调试,回家的时候在试下,OK,晚上马上揭贴
      

  12.   

    请讲清你的意图是什么,
    另外
      ceshiList.Items.Clear(); 
            classList.Items.Add(new ListItem("全部", "-1")); 
            classList.Items.Add(new ListItem("音乐", "0")); 
            classList.Items.Add(new ListItem("文学", "1")); 
            classList.Items.Add(new ListItem("电影", "2")); 
     这里是什么意思?
    ceshiList 清空了,然后又给classList添加选项,然后在 GetDataSet() 中又 给classList重新绑定数据?
      

  13.   

    对于初始化的东西,建议放在page_load ,放在 if(!Page.IsPostBack){} 中
      

  14.   

    测试通过    private static DataSet ds; 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                InitFilter();
            }
            ds = GetDataSet(); 
        }    
        private void InitFilter() 
        {
            classList.Items.Clear(); 
            classList.Items.Add(new ListItem("全部", "-1")); 
            classList.Items.Add(new ListItem("音乐", "0")); 
            classList.Items.Add(new ListItem("文学", "1"));
            classList.Items.Add(new ListItem("电影", "2"));
        } 
        private DataSet GetDataSet() 
        { 
            //SqlConnection myConnection = new SqlConnection(connectionString); 
            //string cmdtext = "Select * from ceshi"; 
            //SqlDataAdapter myda = new SqlDataAdapter(cmdtext, myConnection); 
            //DataSet ds = new DataSet(); 
            //try 
            //{ 
            //    myConnection.Open(); 
            //    myda.Fill(ds, "ceshi"); 
            //    ceshiList.DataSource = ds.Tables["ceshi"].DefaultView; 
            //    ceshiList.DataTextField = "name"; 
            //    ceshiList.DataValueField = "id"; 
            //    ceshiList.DataBind(); 
            //} 
            //catch (SqlException sqlex) 
            //{ 
            //    Response.Write(sqlex.Message); 
            //} 
            //finally 
            //{ 
            //    myConnection.Close(); 
            //}
            //return ds;         //测试代码
            DataSet ds = new DataSet();
            string strBack="1 ¦音乐1 ¦1 #2 ¦音乐2 ¦1#3 ¦电影1 ¦3#4 ¦文学1 ¦2#5 ¦文学2 ¦2";
            ds.Tables.Add(new System.Data.DataTable("ceshi")); 
            ds.Tables [0].Columns .Add (new DataColumn ("id",typeof (string ))); 
            ds.Tables [0].Columns .Add (new DataColumn ("name",typeof (string )));
            ds.Tables [0].Columns .Add (new DataColumn ("classid",typeof (string )));
            string[] Line=strBack.Split('#');
            foreach (string li in Line) 
            { 
              string[]  column=li.Split('¦'); 
              if(column.Length==3) 
              { 
                DataRow newRow=ds.Tables [0].NewRow(); 
                newRow[0]=column[0]; 
                newRow[1]=column[1]; 
                newRow[2]=column[2]; 
                ds.Tables [0].Rows.Add(newRow); 
              } 
            }
            ceshiList.DataSource = ds.Tables["ceshi"].DefaultView; 
            ceshiList.DataTextField = "name"; 
            ceshiList.DataValueField = "id"; 
            ceshiList.DataBind(); 
            return ds; 
        } 
        protected void classList_SelectedIndexChanged(object sender, EventArgs e) 
        { 
            DataView dv = ds.Tables["ceshi"].DefaultView;
            if (classList.SelectedItem.Text == "全部") 
            { 
                dv.RowFilter = "name like  '* '"; 
            }
            else if (classList.SelectedItem.Text == "音乐") 
            { 
                dv.RowFilter = "classid = 1"; 
            }
            else if (classList.SelectedItem.Text == "文学") 
            { 
                dv.RowFilter = "classid = 2"; 
            }
            else if (classList.SelectedItem.Text == "电影") 
            { 
                dv.RowFilter = "classid = 3"; 
            }
            ceshiList.DataSource = dv;
            ceshiList.DataTextField = "name";
            ceshiList.DataValueField = "id";
            ceshiList.DataBind(); 
        } 
      

  15.   

    OK,谢谢大家
    当我没有!Page.IsPostBack的时候,那下拉框就会选择一次就多增加一遍,比如原来是“全部,音乐,文学,电影”,当选择一次的时候,就有2遍重复的,再选择又多一个重复的。
    没有分了,所以热心的网友可以回答一下。