一、现在做的项目里面要有两个DropDownList二级联动,比如说,我选择辽宁省,在第  二个DropDownList里例出辽宁省所有的市.
二、编辑用户的资料的时候,如果客户资料里的地址是辽宁省沈阳市,那么在第一  个DropDownList里辽宁省是被选择状态,地二个DropDownList沈阳市是被选择。我鼓捣半天了,Ajax实在是不熟练,求各位指点迷津啊!

解决方案 »

  1.   

    http://www.cnblogs.com/thcjp/archive/2006/08/29/489491.html
    你到博客园那里去看看,里面有个,不知道是不是你说的.
      

  2.   

    SORRY,是我说的不够清楚,我要的是页面不刷新的,他里面的是刷新的,这个效果达不到要求啊!不过先谢谢!
      

  3.   

    http://www.webjx.com/htmldata/2005-10-15/1129345932.html
    http://www.wujianrong.com/archives/2006/07/ajaxr.html
    你看这两个都是不刷新的
      

  4.   

    或者直接
    http://www.google.cn/search?complete=1&hl=zh-CN&q=%E6%97%A0%E5%88%B7%E6%96%B02%E7%BA%A7%E8%81%94%E5%8A%A8&meta=
      

  5.   

    http://www.a0923.com/CascadingDropDown/CascadingDropDown.aspx整个开源的框架。呵呵
      

  6.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TicketIncomeAdd.aspx.cs" Inherits="Dep2Sheet_TicketIncomeAdd" %><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>散票收入添加</title>
        <link href="../App_Themes/blue/style.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <!--#include file="../inc/ActiveCalendar.js"-->
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" CssClass="officedoc" Font-Bold="True" Text="散票收入添加"></asp:Label>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <br />
            <asp:ValidationSummary ID="ValidationSummary1" runat="server" CssClass="officedoc"
                ShowMessageBox="True" ShowSummary="False" />
            <br />
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tbDate"
                CssClass="officedoc" Display="None" ErrorMessage="请输入日期"></asp:RequiredFieldValidator>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="tbIncome"
                CssClass="officedoc" Display="None" ErrorMessage="请输入收入金额"></asp:RequiredFieldValidator>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="tbRate"
                CssClass="officedoc" Display="None" ErrorMessage="请输入提成系数"></asp:RequiredFieldValidator>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="tbIncome"
                CssClass="officedoc" Display="None" ErrorMessage="您输入的收入金额格式有误,请重新输入" ValidationExpression="\d+(\.\d\d)?"></asp:RegularExpressionValidator>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="tbRate"
                CssClass="officedoc" Display="None" ErrorMessage="您输入的提成系数格式有误,请重新输入" ValidationExpression="\d+(\.\d(\d)?)?"></asp:RegularExpressionValidator><br />
            <table border="0" class="ReformList officedoc">
                <tr>
                    <td align="right" style="width: 75px">
                        日期:</td>
                    <td style="width: 100px">
                        <asp:TextBox ID="tbDate" runat="server" onclick="setday(this)" onmouseover="this.style.cursor='hand';" Width="100px"></asp:TextBox></td>
                    <td align="right" style="width: 74px">
                    </td>
                    <td style="width: 100px">
                    </td>
                </tr>
                <tr>
                    <td align="right" style="width: 75px; height: 16px">
                        驾驶员:</td>
                    <td colspan="3" style="height: 16px">
                    <asp:UpdatePanel runat="server" ID="upDriver">
                    <ContentTemplate>
                        <asp:DropDownList ID="ddlDept" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlDept_SelectedIndexChanged">
                        </asp:DropDownList>
                        <asp:DropDownList ID="ddlTeam" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlTeam_SelectedIndexChanged">
                        </asp:DropDownList>
                        <asp:DropDownList ID="ddlDriver" runat="server">
                        </asp:DropDownList>
                    </ContentTemplate>
                    </asp:UpdatePanel>
                    </td>
                </tr>
                <tr>
                    <td align="right" style="width: 75px">
                        收入金额:</td>
                    <td style="width: 100px">
                        <asp:TextBox ID="tbIncome" runat="server" Width="100px" AutoPostBack="True" OnTextChanged="tbRate_TextChanged"></asp:TextBox></td>
                    <td align="right" style="width: 74px">
                        提成系数:</td>
                    <td style="width: 100px">
                        <asp:TextBox ID="tbRate" runat="server" Width="50px" AutoPostBack="True" OnTextChanged="tbRate_TextChanged"></asp:TextBox>%</td>
                </tr>
                <tr>
                    <td align="right" style="width: 75px">
                        提成金额:</td>
                    <td style="width: 100px">
                    <asp:UpdatePanel runat="server" ID="upBonus" ChildrenAsTriggers="False" UpdateMode="Conditional">
                    <ContentTemplate>
                    <asp:TextBox ID="tbBonus" runat="server" Width="100px"></asp:TextBox>
                    </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="tbIncome" EventName="TextChanged" />
                            <asp:AsyncPostBackTrigger ControlID="tbRate" EventName="TextChanged" />
                        </Triggers>
                    </asp:UpdatePanel>
                        </td>
                    <td align="right" style="width: 74px">
                    </td>
                    <td style="width: 100px">
                    </td>
                </tr>
            </table>
        
        </div>
            <br />
            <asp:Button ID="btnAdd" runat="server" CssClass="Button" Height="22px" Text="确认"
                Width="60px" OnClick="btnAdd_Click" />
            &nbsp; &nbsp;
            <asp:Button ID="btnBack" runat="server" CausesValidation="False" CssClass="Button"
                Height="22px" Text="返回" Width="60px" PostBackUrl="~/Dep2Sheet/TicketIncomeList.aspx" />
        </form>
    </body>
    </html>
      

  7.   

    /***************************************************
     * 模块名称:       散票收入添加模块
     * 创建人:         叶明
     * 创建日期:       2007-03-22
     * 涉及数据表:     Department,EmpNow_State,DepTeam,TicketIncome
     * 最后修改人:     
     * 最后修改日期:   
     * 修改记录:
    ***************************************************/
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Microsoft.Practices.EnterpriseLibrary.Data;public partial class Dep2Sheet_TicketIncomeAdd : SimpleCode
    {
        Database db = DatabaseFactory.CreateDatabase("TedaBusMIS");    protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
        }
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindDeptList();
                string deptID = GetCurrentUserDeptID();
                ddlDept.SelectedIndex = ddlDept.Items.IndexOf(ddlDept.Items.FindByValue(deptID));
                ddlDept.Enabled = false;
                BindTeamList(deptID);
                BindDriverList(ddlTeam.Items[0].Value);
                tbDate.Text = DateTime.Now.ToShortDateString();
            }
        }    #region 绑定部门下拉列表
        /// <summary>
        /// 绑定部门下拉列表
        /// </summary>
        private void BindDeptList()
        {
            string sql = "SELECT DISTINCT ID,DepName FROM Department";
            IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
            ddlDept.DataSource = dr;
            ddlDept.DataTextField = "DepName";
            ddlDept.DataValueField = "ID";
            ddlDept.DataBind();
        }
        #endregion    #region 绑定队下拉列表
        /// <summary>
        /// 绑定队下拉列表
        /// <param name="depID">部门ID</param>
        /// </summary>
        private void BindTeamList(string depID)
        {
            string sql = "SELECT DISTINCT ID,team FROM DepTeam WHERE depID = '" + depID + "'";
            IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
            ddlTeam.DataSource = dr;
            ddlTeam.DataTextField = "team";
            ddlTeam.DataValueField = "ID";
            ddlTeam.DataBind();
        }
        #endregion    #region 绑定员工下拉列表
        /// <summary>
        /// 绑定员工下拉列表
        /// </summary>
        /// <param name="teamID">队ID</param>
        /// <res>
        /// 对于部门中存在队的情况,传入队ID
        /// 对于部门中不存在队的情况,请传入空字符串
        /// 下拉列表将按照部门下拉列表中的值进行绑定
        /// </res>
        private void BindDriverList(string teamID)
        {
            string sql = "";
            if (teamID == string.Empty || teamID == "0")  //对于部门中不存在分队的情况,按照所在部门绑定
            {
                sql = "SELECT EmpNo,EmpName FROM EmpNow_State WHERE EmpDep = '" + ddlDept.SelectedValue + "'";
            }
            else  //对于部门中存在队的情况,按照队绑定
            {
                sql = "SELECT EmpNo,EmpName FROM EmpNow_State WHERE Emp_Team = '" + teamID + "'";
            }
            IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
            ddlDriver.DataSource = dr;
            ddlDriver.DataTextField = "EmpName";
            ddlDriver.DataValueField = "EmpNo";
            ddlDriver.DataBind();
        }
        #endregion    #region 处理部门下拉列表SelectedIndexChanged事件
        protected void ddlDept_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlDriver.Items.Clear();  //清除驾驶员下拉列表
            string sql = "SELECT COUNT(team) FROM DepTeam WHERE DepID = '" + ddlDept.SelectedValue + "'";
            if (int.Parse(db.ExecuteScalar(CommandType.Text, sql).ToString()) > 0)  //如果部门中存在队
            {
                BindTeamList(ddlDept.SelectedValue);  //绑定队下拉列表
            }
            else
            {
                ddlTeam.Items.Clear();  //清除队下拉列表
                BindDriverList("");  //跳过队,直接绑定驾驶员
            }
        }
        #endregion    #region 处理队下拉列表SelectedIndexChanged事件
        protected void ddlTeam_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindDriverList(ddlTeam.SelectedValue);
        }
        #endregion    #region 获取当前用户部门ID
        /// <summary>
        /// 利用当前用户的登录名获取当前用户所在的部门编号
        /// 涉及数据表:EmployeeBaseInfo
        /// </summary>
        /// <returns>当前用户所在的部门编号</returns>
        private string GetCurrentUserDeptID()
        {
            //string result = "";
            ////获取当前登录的用户的员工编号
            ////P.S. 如果无法得到当前用户所在的部门,请在这里Response一下,很可能就是下面的变量没有得到
            //string userName = ((SitePrincipal)Context.User).UserCardNum.ToString();        //if (userName != string.Empty)
            //{
            //    string sql = "SELECT DepID FROM EmployeeBaseInfo WHERE EmployeeNo ='" + userName + "'";
            //    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TedabusMIS"].ToString());
            //    conn.Open();
            //    SqlCommand cmd = new SqlCommand(sql, conn);
            //    try
            //    {
            //        //因为只有一个字段,我用的是SqlCommand的ExecuteScalar方法
            //        result = cmd.ExecuteScalar().ToString();
            //    }
            //    catch
            //    {
            //        result = "";
            //    }
            //    finally
            //    {
            //        cmd.Dispose();
            //        conn.Close();
            //        conn.Dispose();
            //    }
            //}
            //return result;
            return "16";
        }
        #endregion    #region 在客户端弹出对话框
        /// <summary>
        /// 在客户端显示消息对话框
        /// </summary>
        /// <param name="message">对话框中的文字</param>
        private void ShowMessageBox(string message)
        {
            Page.RegisterStartupScript("msg", "<script language='JavaScript'>alert('" + message + "');</Script>");
        }
        #endregion    #region 保存散票收入
        /// <summary>
        /// 增加散票收入
        /// </summary>
        /// <returns>返回1,表示保存成功;返回0,表示保存失败</returns>
        private int AddNewIncome()
        {
            string sql = "INSERT INTO TicketIncome (IncomeDate,DriverID,Income,BonusRate,Bonus,DeptID) "
                        + "VALUES ('" + tbDate.Text + "','" + ddlDriver.SelectedValue 
                        + "'," + tbIncome.Text + "," + tbRate.Text + "," + tbBonus.Text + ",'" +ddlDept.SelectedValue + "')";
            return db.ExecuteNonQuery(CommandType.Text, sql);
        }
        #endregion    protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                if (AddNewIncome() > 0)
                {
                    ShowMessageBox("保存成功");
                }
                else
                {
                    ShowMessageBox("保存失败");
                }
            }
        }
        protected void tbRate_TextChanged(object sender, EventArgs e)
        {
            if(tbIncome.Text != string.Empty || tbRate.Text != string.Empty)
            {
                float result = float.Parse(tbIncome.Text) * (float.Parse(tbRate.Text) / 100);
                tbBonus.Text = result.ToString();
            }
        }
    }
      

  8.   

    给楼主一个三个DropDownList联动的,慢慢爽啊~~