----Updata.jsp----
<table width="100%" border="1">
  <tr>
    <td width="20%">
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SelectArea.jsp"></IFRAME>
    </td>
    <td width="50%">
       <IFRAME name="ifrmtest" frameborder = "0" SRC="Area.jsp"></IFRAME>
    </td>
    <td width="30%">
       <IFRAME name="ifrmtest" frameborder = "0" SRC="SubmitArea.jsp"></IFRAME>
    </td>
  </tr>
  <tr>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SelectWell.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="Well.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SubmitWell.jsp"></IFRAME>
    </td>
  </tr>
  <tr>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SelectTime.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="Time.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SubmitTime.jsp"></IFRAME>
    </td>
  </tr>
  <tr>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SelectSub.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="Sub.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SubmitSub.jsp"></IFRAME>
    </td>
  </tr>
  <tr>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SelectType.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="Picture.jsp"></IFRAME>
    </td>
    <td>
        <IFRAME name="ifrmtest" frameborder = "0" SRC="SubmitPicture.jsp"></IFRAME>
    </td>
  </tr>
</table>----SelectArea.jsp----
<form id="form_area" name="form_area" method="post" action="SelectWell.jsp">
  <label>区块
  <select name="select_area" id="selectArea" size="1"  onchange="changewell();">
              <option id="1" value="BZ">渤中</option>
              <option id="2" value="BN">渤南</option>
              <option id="3" value="BX">渤西</option>
              <option id="4" value="LDW">辽东湾</option>
<script language="javaScript"></script>
  </select>
  </label>
</form>----SelectWell.jsp----
<form id="form_well" name="form_well" method="post" action="">
  <label>井名
  <select name="select_well">
      <option>请选择</option><script language="javaScript"></script>  </select>
  </label>
</form>对不起,新手,第一次用jsp.什么都不会.暂时没有积分,请大家帮忙.
我想要实现在SelectArea表单中选择某个区块后,在SelectWell中自动将所有Well名添加到表单里.
Well信息是通过Area的Id来获取的.
public class WellBuild
{
    public WellSet wellset;
    public void BuildWell(int AreaId, String xml)
    {
        try
        {
            System.out.println(xml);
            SAXBuilder builder = new SAXBuilder(false);
            InputStream in = new ByteArrayInputStream(xml.getBytes());
            Document doc = builder.build(in);
            Element root = doc.getRootElement();
                if(root.getName().compareTo("WellList")==0)
                {
                    StringBuffer str = new StringBuffer();
                    List list = root.getChildren("Well");                    wellset = new WellSet();
                    for(int i=0;i<list.size();i++)
                    {
                        Element well = (Element)list.get(i);
                        String name = well.getAttributeValue("name");
                        int id = Integer.parseInt(well.getAttributeValue("id"));
                        int areaid =Integer.parseInt(well.getAttributeValue("areaId"));
                        if(areaid == AreaId)
                        {
                            wellset.AddWell(id, name, areaid);
                        }
                    }
                }
        }
        catch(Exception ex)
        {
            System.out.print(ex.toString());
            ex.printStackTrace();
        }
    }
}
请大侠们浪费一点时间,帮我一下.谢谢.

解决方案 »

  1.   

    这么多iframe?如果要用多级联动,可以参考一下EasyUS(Union Select)
    http://www.w3cgroup.com/article.asp?id=201Javascript实现的多级联动选择框EasyUS(union select) V1.0

    。支持静态数据与Ajax获取
    。支持每级联动和全部联动
    。最小单元格式:[ID,parentID,text]
      

  2.   

    一定要用ajax才能实现吗?我根本就不会呀.从来没作过这样的东西,页面局部刷新用IFRAME不是可以的嘛吗?
    如果可以的话,帮我做个小例子吧.
    ******
    选择区块后,自动通过ID从数据库中获取井信息,添加到select列表里.
      

  3.   

            Cityscript = null;
            Cityselect = null;
            function select(pointor){
                document.getElementById('txt_province').value = document.getElementById("province").options[window.document.getElementById("province").selectedIndex].text;
                //document.getElementById('value_province').value = document.getElementById('sCity_province').value;
                Cityscript = null;
                Cityscript = document.createElement("script");
                Cityscript.type = "text/javascript";
                document.body.appendChild(Cityscript);
                Cityselect = document.getElementById('city');
                Cityscript.src = "path?pid=" + pointor.value + "&datetime=" + new Date().toLocaleTimeString();
            }       //改变信息
            function addItem(value,text)
            {
                var op=document.createElement('Option');
                op.text=text;
                op.value=value;
                Cityselect.options.add(op);           
            }
    JS做异步提交,在后台out.pring也可以,这只是一个类似的想法
      

  4.   

    你可以按照ASP联动的写法,用JSP的代码再写一下!
      

  5.   

    咋那么老多IFRAME。
    用AJAX来的快些 而且好控制
    或者用asp的那种 存个临时变量控制也好
      

  6.   

    昨晚刚写一个,准备写到博客里的,先贴到这里看看吧
    C#。NET的,可以做为参考
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="table_dropdownlist.aspx.cs" Inherits="mytest_table_dropdownlist" %><!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>
    <script type="text/javascript">
    var step="";//step表示是第几级的联动
    //异步回调
    function callServer(input,str)//step表示是第几级的联动
    {
        debugger;
        step = str;
    //    var arg = step + input.value; //区别是哪一个层次的回调    
        var arg=input.value;
        //删除原来的控件
        DeleteTableCol();
        if(input.value != "0")//选择了有意义的值,在这里,下拉框里有一行是请选择,对应的value为0
        {        
            //添加联动控件
            AddTableCol();
            var context= document.getElementById("ddl"+step);
            <%= ClientScript.GetCallbackEventReference(this, "arg", "receiveServerData", "context")%>; 
        }
    }
    //接受服务器回传的数据
    function receiveServerData(_serverResult, context) 

      context.length=0; 
      //如果回调值为空,说明上一级的回调没有子集了,则删除在触发回调时添加的控件
      if(_serverResult.length == 0)
      {
          DeleteTableCol();
      }
      else
      {
          var arrData = _serverResult.split(","); 
          for (var i = 0; i < arrData.length; i++) 
          { 
             var data = arrData[i].split("@"); 
             context.options[context.length] = new Option(data[1],data[0]); 
           }
       }   

    function AddTableCol()
    {
        var tr=document.getElementById("mytr");
        newtd=tr.insertCell();
        newtd.id="td"+step;
        var id = "ddl"+step;
        var i = Number(step)+1;
        newtd.innerHTML="<select id=\""+id+"\" style='width:100px;' onchange='callServer(this,"+i+")'><option></option></select>";  
        newtd.style.width="100px";  
    }
    function DeleteTableCol()
    {
        var tdnum=document.getElementById("mytr").cells.length;
        var tr=document.getElementById("mytr");
        for (var i=tdnum-1; i>step; i--)
        {
            try{
                tr.deleteCell(i);
            }
            catch(e)
            {;}
        }
    }
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <table id="mytb">
                <tr id="mytr">
                    <td><asp:DropDownList ID="ddl" runat="server" onchange="callServer(this,0)">
                        </asp:DropDownList></td>
                </tr>
            </table>
        </div>
        </form>
    </body>
    </html>
    public partial class mytest_table_dropdownlist : System.Web.UI.Page, ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddl.DataSource = DataAccess.ExecuteSelectCommand("select MeetingRoomSubregionID,MRSName from tblMeetingRoomSubregion where MRSParentID=0");
                this.ddl.DataTextField = "MRSName";
                this.ddl.DataValueField = "MeetingRoomSubregionID";
                this.ddl.DataBind();
                this.ddl.Items.Insert(0, new ListItem("--请选择--", "0"));
            }
        }
        private string _serverResult = ""; // 用于保存回调内容
        public void RaiseCallbackEvent(string eventArgument)
        {
            DataTable mydt = DataAccess.ExecuteSelectCommand("select MeetingRoomSubregionID as id,MRSName as name from tblMeetingRoomSubregion where MRSParentID=" + eventArgument + "");
            if (mydt != null)
            {
                if (mydt.Rows.Count != 0)
                {
                    _serverResult = "0" + "@" + "--请选择--";
                }
                foreach (DataRow row in mydt.Rows)
                {
                    if (_serverResult.Equals(string.Empty))
                    {
                        _serverResult = row["id"] + "@" + row["name"].ToString();
                    }
                    else
                    {
                        _serverResult = _serverResult + "," + row["id"] + "@" + row["name"].ToString();
                    }
                }
            }
        }
        //返回数据结果
        public string GetCallbackResult()
        {
            return _serverResult;
        }
    }