当前位置:编程学习 > C#/ASP.NET >>

为什么总是获取dropdownlist第一行的值?

两个dropdownlist1、dropdownlist2,分别在页面载入时绑定获得大类、对应的小类,dropdownlist1的SelectedIndexChanged事件激发dropdownlist2重新绑定对应的小类,存数据库时只能存dropdownlist2的第一项。
如果把dropdownlist2的绑定代码写在if(!ispostback)里,则dropdownlist1选择时dropdownlist2无动作。代码如下:
我是新手,希望大家不吝赐教啊!谢谢
 protected DataSet ds = new DataSet(); SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ccc"]);

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["admin"] == null)
            {
                Response.Redirect("adminlogin.aspx");
            }
            conn.Open();
            if (!IsPostBack)
            {
                SqlDataAdapter sqlda = new SqlDataAdapter("select * from tb_supertype",conn);
                sqlda.Fill(ds);
                DataRow[] rows = ds.Tables[0].Select();
                foreach (DataRow row in rows)
                {
                    ListItem newitem = new ListItem();
                    newitem.Text = row["typename"].ToString();
                    newitem.Value = row["id"].ToString();
                    DropDownList1.Items.Add(newitem);
                }
            }
            conn.Close();
            if (DropDownList1.Text != "")
            {
                binddd2();
            }
    }

    protected void binddd2()//绑定dropdownlist2
    {
        if (!IsPostBack)
        {
            conn.Open();
            ds.Clear();
            DropDownList2.Items.Clear();
            string sqltxt = "select * from tb_subtype where supertype=" + DropDownList1.SelectedItem.Value;
            SqlDataAdapter sqlda = new SqlDataAdapter(sqltxt, conn);
            sqlda.Fill(ds);
            DataRow[] rows = ds.Tables[0].Select();
            foreach (DataRow row in rows)
            {
                ListItem newitem = new ListItem();
                newitem.Text = row["typename"].ToString();
                newitem.Value = row["id"].ToString();
                DropDownList2.Items.Add(newitem);
            }
            conn.Close();
        }
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
            if (DropDownList1.Text != "")
            {
                binddd2();
            }
    } --------------------编程问答--------------------

把Page_load 中的


if (DropDownList1.Text != "")
{
binddd2();
}

放到if( !IsPostBack ) 中,把 binddd2() 中的if去掉.


使用任意的中文编码查看或发帖即可。



--------------------------------------------------------------------------------
析软网
http://www.parsesoft.net
http://bbs.parsesoft.net
致力于 DocBook 的应用,专注于开源软件的解析、手册/指南、以及应用文章、书籍的发布。

--------------------编程问答-------------------- 所有的绑定应该放在if (!IsPostBack)里面
--------------------编程问答--------------------
引用 2 楼 hkstb 的回复:
所有的绑定应该放在if (!IsPostBack)里面

正解!
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,