这里有两个问题:
1、ddl_2和ddl_3的下拉框的列表从那里来,也就是你将扩充Bind中的内容
2、ddl_2和ddl_3的值的字段是什么,你那上面写的都是team_name,所以一定是错的,一定要有两个不同的字段,你可以在下段代码中修改SetValue函数 <table id="table1" runat="server" align="center">
<tr>
<td>联赛:</td>
<td><asp:DropDownList ID="ddl_1" Runat="server" AutoPostBack="True">
<asp:ListItem Value="1">意甲</asp:ListItem>
<asp:ListItem Value="2">德甲</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td>主队:</td>
<td><asp:DropDownList ID="ddl_2" Runat="server" DataTextField="team_name" /></td>
</tr>
<tr>
<td>客队:</td>
<td><asp:DropDownList ID="ddl_3" Runat="server" DataTextField="team_name" /></td>
</tr>
<tr>
<td colspan="2" align="center"><asp:Button ID="btn1" Text="submit" OnClick="btn1_Click" Runat="server" /></td>
</tr>
</table>
<asp:Label ID="teamname" Runat="server" ForeColor="red" /> SqlConnection objConn;
private void Page_Load(object sender, System.EventArgs e)
{
objConn=new SqlConnection(strConn);
if(!this.IsPostBack)
Bind();
}
protected void Bind()
{
//这里是用于对ddl_2和ddl_3的下拉列表框进行绑定

Page.DataBind();
} /// <summary>
/// 根据ddl_1重新设置ddl_2和ddl_3的值
/// </summary>
private void SetValue()
{
SqlDataAdapter adpter=new SqlDataAdapter("sp_GetTeamsOfLeague",objConn);
adpter.SelectCommand.CommandType=CommandType.StoredProcedure;
adpter.SelectCommand.Parameters.Add(new SqlParameter("@league_id",SqlDbType.TinyInt));
adpter.SelectCommand.Parameters[0].Value=Convert.ToInt32(ddl_1.selectedItem.Value);
DataSet ds=new DataSet();
adpter.Fill(ds,"Teams");
ddl_2.DataSource=ds.Tables["Teams"];
ddl_3.DataSource=ds.Tables["Teams"];
if(ds.Tables["Teams"].Rows.Count>0)
{
System.Web.UI.WebControls.ListItem l_li=new ListItem();
l_li.Text=ds.Tables[0].Rows[0]["team_name"].ToString();
ddl_2.Items.Add(l_li);
l_li.Selected=true; System.Web.UI.WebControls.ListItem l_li=new ListItem();
l_li.Text=ds.Tables[0].Rows[0]["team_name"].ToString();
ddl_2.Items.Add(l_li);
l_li.Selected=true;
}

}
protected void btn1_Click(object sender,EventArgs e)
{
teamname.Text="主队: "+ddl_2.SelectedItem.Text+"<br>"+"客队: "+ddl_3.SelectedItem.Text;
} private void ddl_1_SelectedIndexChanged(object sender, System.EventArgs e)
{
SetValue();
}

解决方案 »

  1.   

    我写过这样的程序,我发现你的程序有问题,drop1选联赛,drop2,drop3是主队客队,一个联赛里主队和客队是一样的,所以drop2,drop3绑定是一样的.这里最关键的是你的库的建立了.
      

  2.   

    to: luoqing(明天将会...)
    ddl_2和ddl_3的数据是一致的.还是没有解决大家帮忙!
      

  3.   

    Bind();放到if(!IsPostBack)是对的,关键是还要放到SelectedIndexChanged事件中。
    private void ddl_1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    Bind();
    }
      

  4.   

    恩,我的想法也是一样.你有没有把绑定的方法Bind()放到ddl_1_SelectedIndexChanged事件里?