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 音乐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();
}
}
---------
当我选择音乐的时候就出现标题的错误,请大伙解决一下
<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">
--------------
找了很多这样的帖子,还是没有解决,-_-!!
if (ceshiList.SelectedItem.Text == "全部")
{
dv.RowFilter = "name like '* '";
}
----------------------
错误是在这个地方,就是选择音乐或其他的时候,开始报错
还有
Page_Load中的那段代码放在
if(!Page.IsPostBack)
{
}
中
---------------
重新写代码,具体是指什么
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";
}
{
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 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();
}
}
if (!IsPostBack)
{
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"));
这里是什么意思?
ceshiList 清空了,然后又给classList添加选项,然后在 GetDataSet() 中又 给classList重新绑定数据?
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();
}
当我没有!Page.IsPostBack的时候,那下拉框就会选择一次就多增加一遍,比如原来是“全部,音乐,文学,电影”,当选择一次的时候,就有2遍重复的,再选择又多一个重复的。
没有分了,所以热心的网友可以回答一下。