嵌套母版页中的页面dropdownlist无法触发seletindexchange事件,其中autopostback=true 
事件种该dropdownlist不存在相同内容
原因

解决方案 »

  1.   

     protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
               Bind();
               this.bigTypeName_SelectedIndexChanged(new object(), new EventArgs());
            }
        }
        void Bind()
          {
            string sel = "select * from proParType";
            DataSet dt = bs.GetDataSet(sel);
            for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
            {
                this.bigTypeName.Items.Add(dt.Tables [0].Rows [i]["bigTypeName"].ToString());
            }
      protected void bigTypeName_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.proTypeName.Items.Clear();
            string sel2 = "select * from proType where BigtypeName= '"+ this.bigTypeName.SelectedValue+"'";
            try
            {
                DataSet ds = bs.GetDataSet(sel2);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    this.proTypeName.Items.Add(ds.Tables[0].Rows[i]["proTypeName"].ToString());
                }
            }
            catch
            {
            }
        }    }
      

  2.   

    this.bigTypeName_SelectedIndexChanged(new object(), new EventArgs());
    是我要在选择bigTypeName这个dropdowlist时候触发以上事件 ,在load事件中声明一下是为了bigTypeName和proTypeName均有初始值在。
    其余改变bigTypeName他适合就不触发事件了
    有dropdowlist1     id=bigTypeName
    有dropdowlist2     id=proTypeName
    目的:选择bigTypeName时候触发
    bigTypeName_SelectedIndexChanged事件
      

  3.   

    this.bigTypeName_SelectedIndexChanged(new object(), new EventArgs());
    错了
      

  4.   

     DropDownList1.AutoPostBack = true;
    把AutoPostBack 的属性设置为true就好了
      

  5.   

    去掉:this.bigTypeName_SelectedIndexChanged(new object(), new EventArgs());
      

  6.   

    如果你想像你这样写可以这样    protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList1.SelectedIndexChanged += new EventHandler(DropdownChanged);
        }
        protected void DropdownChanged(object sender, EventArgs e)//随便一个方法,只要有这2个参数即可用delegate挂载
        {
            Label1.Text = (DropDownList1.SelectedItem.Text);
        }
    但是控件已经自己绑定bigTypeName_SelectedIndexChanged的话就不要在Page_Load掉用了啊
      

  7.   

    尝试过,但是无论选哪个选项,结果都是会自动切换到第一个,根本触发不了selectindexchange
      

  8.   

    必须注意的是,下拉列表绑定后,要放在if(!ispostback)条件中,然后出发的事件是SelectedIndexChanged或SelectedTextChanged
      

  9.   

    if(!ispostback)
    {
    //bindlst
    }
    估计是这里的问题吧.
      

  10.   

    可以把  bigTypeName_SelectedIndexChanged(object sender, EventArgs e)这个事件里的代码直接写到一个方法里,直接if (!this.IsPostBack)调用就可以吧。只有你的bigTypeName有初始值。
      

  11.   

    效果是一样的,只有在load中不postback时候才执行那个,其余的都不触发 bigTypeName_SelectedIndexChanged(object sender, EventArgs e)
    跟所放置没关系,我单步执行过了,
    即使我吧load事件中的删了,还是不触发
      

  12.   

    从现有的程序看,我觉得没毛病。检查一下:1, 你有没有在其他地方调用过 Bind()?2,你有没有把bigTypeName动态Add到其他控件。
      

  13.   

    (1).设个断点:先看有没有运行代码。
    (2).调用SelectedIndexChanged的语法:
    YourDropDownListID_SelectedIndexChanged(sender, e);
      

  14.   

    一般都是:
    1,autopostback=true;
    2.if(!ispostback){//bindlist()}
      

  15.   


       <%@ Page Language="C#" AutoEventWireup="true" CodeFile="111111.aspx.cs" Inherits="_111111" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
            onselectedindexchanged="DropDownList1_SelectedIndexChanged">
            <asp:ListItem>111</asp:ListItem>
            <asp:ListItem>222</asp:ListItem>
            <asp:ListItem>333</asp:ListItem>
        </asp:DropDownList>    
        </div>    </form>
    </body>
    </html>using System;
    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;public partial class _111111 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           
        }
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Response.Write("我变了!");
        }
    }看哪地方不一样的,自行修改
      

  16.   

    解决了,是嵌套模板页时都写了form原因,其他的都正常。谢谢各位大仙了