去掉循环   if (k==1)
   {
      wz1.Items[wz1.SelectedIndex].Selected=false;
      wz1.Items[1].Selected=true;
      wz2.Items[wz2.SelectedIndex].Selected=false;
      wz2.Items[2].Selected=true;
      wz3.Items[wz3.SelectedIndex].Selected=false;
      wz3.Items[3].Selected=true;
   }
……不太明白你的意思,你试试。

解决方案 »

  1.   

    建议楼主看看VS.NET自带的实例教程中的CarsSelector例程,上面讲解了使用DataTable和DataView来解决这个问题的方法
      

  2.   

    给你个思路吧,当第一个dropdownlist的内容改变时,激发SelectedIndexChanged事件,你可以在这个事件里面写代码,比如DropDownList2.DataSource = dataset.Tables("userinf")
            DropDownList2.DataBind(),这样第二个dropdownlist的内容就会改变了,不过之前你要将它的DataValueField和DataTextField还有DataSource指定好,最后还要加上这个If Not IsPostBack Then
                    DropDownList2.DataBind()
    end if
      

  3.   

    首先你这程序有个错误.
    wz3.Items[3].Selected=true;
    会造成数组越位.

    wz1.Items[0].Selected=true;
    wz2.Items[1].Selected=true;
    wz3.Items[2].Selected=true;我的程序是这样的.测试后
    wz1里面是wz0001
    wz2里面是wz0002
    wz3里面是wz0003不知道是不是你要的结果.
    <!--
    @Author : Martin;
    @Version: 2003-2-25
    -->
    <%@ Page language="C#" runat="server" debug=true%>
    <html>
    <head>
    <script language="C#" runat="Server">
    public void Page_Load(object sender, EventArgs e) {
    int i;
    int k;
    for (i=0;i<3;i++)
    {
       k=i+1;
       if (k==1)
       {
      wz1.Items[wz1.SelectedIndex].Selected=false;
      wz1.Items[0].Selected=true;
       }
       if (k==2)
       {
      wz2.Items[wz2.SelectedIndex].Selected=false;
      wz2.Items[1].Selected=true;
       }
       if (k==3)
       {
      wz3.Items[wz3.SelectedIndex].Selected=false;
      wz3.Items[2].Selected=true;
       }
    } }
    </script>
    </head>
    <body>
    <form runat="server">
    <asp:DropDownList id=wz1 runat=server>
    <asp:ListItem Value="wz0001">wz0001</asp:ListItem>
    <asp:ListItem Value="wz0002">wz0002</asp:ListItem>
    <asp:ListItem Value="wz0003">wz0003</asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList id=wz2 runat=server>
    <asp:ListItem Value="wz0001">wz0001</asp:ListItem>
    <asp:ListItem Value="wz0002">wz0002</asp:ListItem>
    <asp:ListItem Value="wz0003">wz0003</asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList id=wz3 runat=server>
    <asp:ListItem Value="wz0001">wz0001</asp:ListItem>
    <asp:ListItem Value="wz0002">wz0002</asp:ListItem>
    <asp:ListItem Value="wz0003">wz0003</asp:ListItem>
    </asp:DropDownList>
    </form>
    </body>
    </html>
      

  4.   

    先谢谢大家的参与,忘了说明的是:他们的ListItem都是程序加上去的,下面的程序完全说明了我的问题:
    先有个函数是加ListItem的:
    void aa()
    {
    wz1.Items.Clear();
    wz3.Items.Clear();
    wz2.Items.Clear();
    int k;
    int i;
    for (i=0;i<3;i++)
    {
    k=i+1;
    ListItem item1=new ListItem();
    item1.Text="WZ00"+k;
    item1.Value="WZ00"+k; wz1.Items.Add(item1);
    wz2.Items.Add(item1);
    wz3.Items.Add(item1);
    }
    }然后有一个按扭:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    aa();
    int i;
    for (i=0;i<3;i++)
    {
    if (i==0)
    {
    wz1.Items[wz1.SelectedIndex].Selected=false;
    wz1.Items[0].Selected=true;
    }
    if (i==1)
    {
    wz2.Items[wz2.SelectedIndex].Selected=false;
    wz2.Items[1].Selected=true;
    }
    if (i==2)
    {
    wz3.Items[wz3.SelectedIndex].Selected=false;
    wz3.Items[2].Selected=true;
    }
    }
    }
    结果三个DropDownList的选择都是WZ003
      

  5.   

    哦,问题明白了.是这样的.你在为DropDownList加ListItem的时候用的是同一个对象.
    三个DropDownList 用一个ListItem,在用Button1_Click 里面wz1.Items wz2.Items
    wz3.Items 指的就是同一个ListItem.所以当运行到wz3.Items[2].Selected=true 就会
    把这个listitem的选择定在第三个item上.你只有用三个listitem分别给DropDownList
    例如:
    for (i=0;i<3;i++)
    {
    k=i+1;
    ListItem item1=new ListItem();
    ListItem item2=new ListItem();
    ListItem item3=new ListItem(); item1.Text="WZ00"+k;
    item1.Value="WZ00"+k; item2.Text="WZ00"+k;
    item2.Value="WZ00"+k; item3.Text="WZ00"+k;
    item3.Value="WZ00"+k; wz1.Items.Add(item1);
    wz2.Items.Add(item2);
    wz3.Items.Add(item3);
    }
      

  6.   

    first: wz1,wz2 and wz3 应该在内容上有互相联系,这样才能当wz1改变时wz2,wz3才能随之改变。
    second:在OnSelectedIndexChanged事件中把wz1当前选择的值作为wz2要绑定的条件之一,依次类推。
    这里有一个简单例子: 
    //绑定DropDownList的方法:
    protected void BindDropDown(string sSQL, string sValueField, string sTextField, DropDownList dropdown)
    {
    SqlConnection oConn = new SqlConnection(ConnString);
    oConn.Open();
    SqlCommand cmd = new SqlCommand(sSQL, oConn);
    SqlDataReader dr = cmd.ExecuteReader();
    dropdown.DataSource = dr;
    dropdown.DataValueField = sValueField;
    dropdown.DataTextField = sTextField;
    dropdown.DataBind();
    dr.Close();
    dropdown.SelectedIndex = 0;
    }
    //OnSelectedIndexChanged="ChangeSelection" 
    protected void ChangeSelection(Object sender, EventArgs e)
    {
    DropDownList d = (DropDownList)sender;
    if ( d == wz1)
    {
    string sID = wz1.SelectedItem.Value;
    BindDropDown("select * from t_table where c_columns=" + sID,"c_id","c_mc",wz2);
    string sID = wz2.SelectedItem.Value;
    BindDropDown("select * from t_table1 where c1_columns=" + sID,"c1_id","c1_mc",wz3);
    }
    }you try:
      

  7.   

    谢谢blazelgh(blaze) ,马上揭贴!