当我点大类的时候,如果这个大类里有小类的话,小类下拉框激活。在不类框中显示大类的小类列表,如果没有小类不激活。
代码如下。数据库都写好了,就是不知道怎么让这两个下拉框互联起来。。protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT [BigID], [BigClassName] FROM [Hover_BigClass_New]"; DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables.Count > 0)
{
if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.Enabled = true;
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigID";
ClassNews.DataBind();
if(Request["BigClassName"].ToString()!=null)
{
////////////小类
String BigClassNames = Request["BigClassName"].ToString();
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + BigClassNames + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables.Count > 0)
{
if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.DataSource = ds1;
SmallClassNews.Enabled = true;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
}
else
{
SmallClassNews.Enabled = false;
}
}
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
///////////小类结束
}
}
else
{
ClassNews.Enabled = false;
}
}
else
{
ClassNews.Enabled = false;
} ol.Dispose();
ol = null; connstr.Close(); }
以下是前台代码
<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
<asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
代码如下。数据库都写好了,就是不知道怎么让这两个下拉框互联起来。。protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT [BigID], [BigClassName] FROM [Hover_BigClass_New]"; DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables.Count > 0)
{
if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.Enabled = true;
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigID";
ClassNews.DataBind();
if(Request["BigClassName"].ToString()!=null)
{
////////////小类
String BigClassNames = Request["BigClassName"].ToString();
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + BigClassNames + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables.Count > 0)
{
if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.DataSource = ds1;
SmallClassNews.Enabled = true;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
}
else
{
SmallClassNews.Enabled = false;
}
}
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
///////////小类结束
}
}
else
{
ClassNews.Enabled = false;
}
}
else
{
ClassNews.Enabled = false;
} ol.Dispose();
ol = null; connstr.Close(); }
以下是前台代码
<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
<asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
for sample:
protected void ClassNews_SelectedIndexChanged(object sender ,EventArgs e)
{
//小类code(引用你自己写的)
String BigClassNames = Request["BigClassName"].ToString();
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + BigClassNames + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables.Count > 0)
{
if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.DataSource = ds1;
SmallClassNews.Enabled = true;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
}
else
{
SmallClassNews.Enabled = false;
}
}
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
}
{
connstr = System.Configuration.ConfigurationSettings.AppSettings["sql2005"];
if (!IsPostBack)
{
SelectedVisible("allFalse");
}
} /// <summary>
/// 选择控件可见与否
/// </summary>
/// <param name="temp">传递的参数控制显示什么</param>
private void SelectedVisible(string temp)
{
if (temp.Equals("allFalse"))
{
lblname.Visible = false;
ddlRname.Visible = false;
}
else if (temp.Equals("RnameVisible"))
{
lblname.Visible = true;
ddlRname.Visible = true;
}
}
protected void ddlRname_SelectedIndexChanged(object sender, EventArgs e)
{
pt = new string[16];
for (int i = 0; i < 16; i++)
{
pt[i] = " ";
}
if (ddlRtype.SelectedValue.ToString().Equals("1"))
{
//绑定小类1
}
else if (ddlRtype.SelectedValue.ToString().Equals("2"))
{
//绑定小类2
}
else if (ddlRtype.SelectedValue.ToString().Equals("3"))
{
//绑定小类3
}
else
{
//绑定小类4
}
} protected void ddlRtype_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedVisible("allFalse");
ddlRname.Items.Clear();
ddlRname.Items.Add(new ListItem("---请选择---", "-1"));
if (ddlRtype.SelectedValue.ToString().Equals("1"))
{
(new SqlDataAccess(connstr)).ConnectDDL("SELECT sid, id, name, type FROM ZCityIdToName ORDER BY id", "ZCityIdToName", "name", "id", ddlRname);
SelectedVisible("RnameVisible");
}
else if (ddlRtype.SelectedValue.ToString().Equals("2"))
{
(new SqlDataAccess(connstr)).ConnectDDL("SELECT sid, id, name, type FROM ZCityIdToName ORDER BY id", "ZCityIdToName", "name", "id", ddlRname);
SelectedVisible("RnameVisible");
}
else if (ddlRtype.SelectedValue.ToString().Equals("3"))
{
(new SqlDataAccess(connstr)).ConnectDDL("SELECT sid, id, name, type FROM ZCityIdToName ORDER BY id", "ZCityIdToName", "name", "id", ddlRname);
SelectedVisible("RnameVisible");
}
else
{
SelectedVisible("allFalse");
}
}
<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList> <asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
==============================
SmallClassNews要根据ClassNews选中显示
那么第一次在pageload 先绑定 ClassNews
然后在ClassNews的selectchanged 事件里面根据 ClassNews选中的项再读取数据出来 再绑定到SmallClassNews ,之前 先把ClassNews 的autopostback属性设置为true
有什么解决方法没有...
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;public partial class admins_addnew : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
showBigData();
showData();
}
} protected void Button1_Click(object sender, EventArgs e)
{
this.Label1.Text = this.HtmlEditor1.Text;
} public void showBigData()
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT BigID, BigClassName FROM Hover_BigClass_New"; DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables.Count > 0)
{
if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.Enabled = true;
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigID";
ClassNews.DataBind();
if (Request.QueryString["BigClassName"] != null)
if (ClassNews.Items.FindByValue(Request.QueryString["BigClassName"].ToString()) != null)
ClassNews.Items.FindByValue(Request.QueryString["BigClassName"].ToString()).Selected = true; }
else
{
ClassNews.Enabled = false;
}
}
else
{
ClassNews.Enabled = false;
} ol.Dispose();
ol = null; connstr.Close();
}
public void showData()
{
//小类code(引用你自己写的)
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); String BigClassNames = Convert.ToString(ClassNews.SelectedItem.Value);
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select SmallClassID,SmallClassName,BigClassName From Hover_SmallClass_New where BigClassName='" + BigClassNames + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables.Count > 0)
{
if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.DataSource = ds1;
ClassNews.AutoPostBack = true;
SmallClassNews.Enabled = true;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
if (Request.QueryString["BigClassName"] != null)
if (SmallClassNews.Items.FindByValue(Request.QueryString["BigClassName"].ToString()) != null)
SmallClassNews.Items.FindByValue(Request.QueryString["BigClassName"].ToString()).Selected = true;
}
else
{
SmallClassNews.Enabled = false;
}
}
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
} protected void SmallClassNews_SelectedIndexChanged(object sender, EventArgs e)
{
showData();
} protected void ClassNews_SelectedIndexChanged(object sender, EventArgs e)
{
showBigData();
}
}为什么在前台页面点大类,刷新后没有跳到相应的大类上,还是出现列表第一条数据.小类也没有数据???????????????
<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px" AutoPostBack="True" SelectedIndexChanged = "ClassNews_SelectedIndexChanged">
</asp:DropDownList> vs 2005<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px" AutoPostBack="True" OnSelectedIndexChanged="ClassNews_SelectedIndexChanged">
</asp:DropDownList> <asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList> private void bindtopDL()
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT [BigID], [BigClassName] FROM [Hover_BigClass_New]";
DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigID";
ClassNews.DataBind();
}
else
{
ClassNews.AutoPostBack = false;
}
}private void bindsubDL()
{
if (this.BigClassName.SelectedItem.value != "")
{
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" +this.BigClassName.SelectedItem.value+ "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.Enabled = true;
SmallClassNews.DataSource = ds1;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
}
else
{
SmallClassNews.Enabled = false;
}
}
protected void Page_Load(object sender, EventArgs e)
{
this.bindtopDL();
this.bindsubDL();
}
protected void ClassNews_SelectedIndexChanged(object sender,System.EventArgs e)
{
this.bindsubDL();
}
一点技术含量都没有!
用到的时候
var ddl1_va = window.frames[0].document.getElementById("ddl1");
将ddl1_va赋给一个hidden控件即可
当我选大类列表其他项的时候,并没有停在选中的那一项,而是又回到了大类列表的第一项数据那,比如,大类有,AA,BB,CC
我点了BB,但是列表没有停在BB上,而是又回到了AA.....怎么解决这个问题...
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
this.bindtopDL();
this.bindsubDL();
}
private void bindtopDL()
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT * FROM [Hover_BigClass_New]";
DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigClassID";
ClassNews.DataBind();
}
else
{
ClassNews.AutoPostBack = false;
}
ol.Dispose();
ol = null;
connstr.Close();
} private void bindsubDL()
{
if (this.ClassNews.SelectedItem.ToString() != "")
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + ClassNews.SelectedItem.ToString() + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.Enabled = true;
SmallClassNews.DataSource = ds1;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind();
}
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
connstr.Close();
}
} protected void ClassNews_SelectedIndexChanged(object sender,System.EventArgs e)
{
this.bindsubDL();
}
{
DropDownList3.Enabled = true;
ImageButton1.Enabled = true;
Label1.Text = "";
DropDownList3.DataSource = dataSet;
DropDownList3.DataTextField = "textfield";
DropDownList3.DataValueField = "id";
DropDownList3.DataBind();
if(Request.QueryString["chubanshe"]!=null)
if (DropDownList3.Items.FindByValue(Request.QueryString["chubanshe"].ToString()) != null)
DropDownList3.Items.FindByValue(Request.QueryString["chubanshe"].ToString()).Selected = true; }//如果含有记录就说明有新的数据
else
{
Label1.Text = "当前年级的所选学科暂时没有内容,<a href='addleibie.aspx'>去添加学科内容>></a>";
DropDownList3.Enabled = false;
ImageButton1.Enabled = false;
}
这是别人的代码,但是那几句我并没有看懂,希望能找到一个解决的方法
drop1_selectedChaning() 大类的
drop2_....()小类的
第1个大类的直接绑定数据库
第2个小类的把drop1.selecedValue值传到第2个小类的数据库源上
在大类的changing事件里调用小类的changing 就可以了就会显示在你选大类时小类自动绑定了.
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ClassNews" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<fieldset>
<legend></legend>
新闻标题<asp:TextBox ID="title" runat="server"></asp:TextBox>
<br />
<br />
新闻类别
<asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px"
AutoPostBack="True" OnSelectedIndexChanged="ClassNews_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
</asp:DropDownList>
<br /> <br />
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<br />
<br />
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
新闻内容
<cc1:HtmlEditor ID="HtmlEditor1" runat="server" TF_EditHtml="1" TF_UpTu="1" ResourcesPath="HtmlEditor" /> <br />
<br />
<br />
<br />
发布人<asp:TextBox ID="person" runat="server"></asp:TextBox>
<br />
<br />
摘录网址<asp:TextBox ID="zWeb" runat="server"></asp:TextBox>
<br />
<br />
录入时间<asp:TextBox ID="time" runat="server"></asp:TextBox>
<br />
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="提交" onclick="Button1_Click" />
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
后台代码
public partial class admins_addnew : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.bindtopDL();
this.bindsubDL();
}
}
private void bindtopDL()
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connstr;
cmd.CommandText = "SELECT * FROM [Hover_BigClass_New]";
DataSet daset = new DataSet();
OleDbDataAdapter ol = new OleDbDataAdapter();
ol.SelectCommand = cmd;
ol.Fill(daset); if (daset.Tables[0].Rows.Count > 0)
{
ClassNews.AutoPostBack = true;
ClassNews.DataSource = daset;
ClassNews.DataTextField = "BigClassName";
ClassNews.DataValueField = "BigClassID";
ClassNews.DataBind();
}
else
{
ClassNews.AutoPostBack = false;
}
ol.Dispose();
ol = null;
connstr.Close();
} private void bindsubDL()
{
if (this.ClassNews.SelectedItem.ToString() != "")
{
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
connstr.Open(); OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = connstr;
cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + ClassNews.SelectedItem.ToString() + "'"; DataSet ds1 = new DataSet();
OleDbDataAdapter dsda = new OleDbDataAdapter();
dsda.SelectCommand = cmd1;
dsda.Fill(ds1); if (ds1.Tables[0].Rows.Count > 0)
{
SmallClassNews.Enabled = true;
SmallClassNews.DataSource = ds1;
SmallClassNews.DataTextField = "SmallClassName";
SmallClassNews.DataValueField = "SmallClassID";
SmallClassNews.DataBind(); }
else
{
SmallClassNews.Enabled = false;
}
ds1.Dispose();
ds1 = null;
connstr.Close();
}
else
{
SmallClassNews.Enabled = false;
}
} protected void ClassNews_SelectedIndexChanged(object sender,System.EventArgs e)
{
this.bindsubDL();
}