<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA涂鴉
    關(guān)于JAVA的點(diǎn)點(diǎn)滴滴
    posts - 50,  comments - 689,  trackbacks - 0
    大伙應(yīng)該在開發(fā)中遇到過這種情況,就是通過下拉框選擇要顯示的內(nèi)容。如下圖所示:

    select1.jpg

    select2.jpg

    在沒用到ajax技術(shù)時(shí),我們可以使用兩種方法來解決,一種就是選擇后再次獲得下拉框的數(shù)據(jù),和顯示的數(shù)據(jù)一起反映在頁面上,這是最笨的方法,因?yàn)槟氵x擇多少次,下拉框的數(shù)據(jù)就要從數(shù)據(jù)庫重復(fù)讀取多少次。另外一種方法就是將頁面分兩楨,上楨是下拉框,下楨就是要讀取的內(nèi)容。這樣做比第一種方法進(jìn)步了不少,但是分楨對(duì)頁面控制又有了要求。

    使用Ajax正好結(jié)合了上面兩種方法的優(yōu)點(diǎn)。

    下面就來看看我們是怎樣實(shí)現(xiàn)的,我的實(shí)現(xiàn)平臺(tái)是Struts+Spring+Hibernate,但與Ajax交道的也就是Struts,至于你后臺(tái)怎樣從數(shù)據(jù)庫取得數(shù)據(jù),就要看你的具體實(shí)現(xiàn)了:

    JSP頁面:
    <%@?page?language="java"?import="java.util.*,com.wehave.oa.labourset.model.MBm"?pageEncoding="gb2312"%>
    <%@?taglib?uri="struts-html"?prefix="html"?%>
    <%@?taglib?uri="struts-bean"?prefix="bean"?%>
    <%@?taglib?uri="struts-logic"?prefix="logic"?%>
    <html>
    <head>
    <title>借閱信息</title>
    <link?rel="stylesheet"?type="text/css"?href="../css/table.css">
    <link?href="../css/style.css"?rel="stylesheet"?type="text/css">?
    <script?src="../css/Alai_tc.js"?language="JScript"></script>?
    <!--?html:javascript?formName="lendingCartForm"??method="validate"/-->
    <script?Language="JavaScript">

    function?btn_AddFolder()?
    {
    ????
    if(confirm("確定要?dú)w還嗎?")){
    ????????
    //if(document.lendingCartForm.onsubmit()){????????
    ????????????document.forms[0].submit();
    ????????
    //}
    ????}
    ??
    }


    var?req;
    var?dataDiv;
    var?dataTable;
    var?dataTableBody;
    function?Change_Select()
    {
    ????dataTableBody
    =document.getElementById("lendingcartDataBody");
    ????dataTable
    =document.getElementById("lendingcartData");
    ????dataDiv
    =document.getElementById("popup");
    ????
    ????var?zhi
    =document.getElementById('tbEngineFilereadId').value;
    ????var?url
    ="returnBlueprintPage.go?method=getLendingCart&id="+zhi;
    ????
    ????
    if(zhi=="0"){
    ????????alert(
    "請(qǐng)選擇您要察看的信息");
    ?????????????????
    return;
    ????}
    else{
    ????????
    if(window.XMLHttpRequest)
    ????????
    {
    ????????????req
    =new?XMLHttpRequest();
    ????????}
    else?if(window.ActiveXObject)
    ????????
    {
    ????????????req
    =new?ActiveXObject("Microsoft.XMLHTTP");
    ????????}

    ????????
    ????????
    if(req)
    ????????
    {
    ????????????req.open(
    "GET",url,true);
    ????????????req.onreadystatechange
    =callback;
    ????????????req.send(
    null);
    ????????}

    ????}

    }


    function?callback()
    {
    ????
    if(req.readyState?==?4)
    ????
    {
    ????????
    if(req.status?==?200)
    ????????
    {
    ????????????
    //alert(req.responseText);
    ????????????document.getElementById("results").innerHTML=req.responseText;
    ????????}
    else{
    ????????????alert(
    "Not?able?to?retrieve?description"+req.statusText);
    ????????}

    ????}

    }


    </script>
    </head>
    <body?class="bodycolor"?topmargin="0"?leftmargin="0">
    ????
    <html:form?action="/updateLendingcarts"?onsubmit="return?validate(this)">????
    ????
    <table?width="100%"?background="../images/blank.gif"?border="0"?cellspacing="0"?cellpadding="0">
    ????????
    <tr><td?height="7"?colspan="2"></td></tr>
    ????????
    <tr>
    ????????????
    <td?width="45%"?height="23"?align="left"><strong>&nbsp;&nbsp;?<img?src="../images/small/page_tools_bar.gif"?width="13"?height="13"><span?class="css3?STYLE20">&nbsp;&nbsp;借閱信息</span></strong></td>
    ????????????
    <td?width="55%"?align="right">
    ????????????
    <img?name="aa"?src="../images/xin_gh.gif"?width="51"?height="19"?alt=""?align="absmiddle"??onclick='btn_AddFolder()'??style="cursor:hand">&nbsp;?
    ????????????
    <img?name="aa"?src="../images/xin_gb.gif"?width="51"?height="19"?alt=""?align="absmiddle"??style="cursor:hand"?onclick='javascript:window.close()'>&nbsp;?
    ????????????
    </td>
    ????????
    </tr>
    ????
    </table>
    ????
    <table?width="100%"?border="1"?cellpadding="0"?cellspacing="0"?style="border-collapse:?collapse;?border-top-width:?0"?bordercolor="#426EB4">
    ????????
    <tr>
    ????????????
    <td?width="30%"?class="td1_a"><span?class="STYLE1">請(qǐng)選擇借閱號(hào)</span></td>????
    ????????????
    <td?width="70%">
    ????????????
    <html:select?property="tbEngineFilereadId"?onchange="Change_Select()"?styleClass="SmallSelect">
    ????????????????
    <html:option?value="0">請(qǐng)選擇&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</html:option>
    ???????????????????
    <html:options?collection="idlist"?property="tbEngineFilereadId"?labelProperty="tbEngineFilereadId"/>
    ????????????
    </html:select>
    ????????????
    </td>?????
    ????????
    </tr>
    ????
    </table>
    ?????
    <div?id="results"></div>
    ????
    <INPUT?TYPE="hidden"?name="method"?value="doUpdateLendingcarts">?
    ????
    </html:form>
    ????
    </body>
    </html>

    頁面內(nèi)容看上去很多,其實(shí)關(guān)鍵代碼并不多:

    首先我們的獲得下拉框的數(shù)據(jù),并在頁面上反映出來:
    <html:select?property="tbEngineFilereadId"?onchange="Change_Select()"?styleClass="SmallSelect">
    ?????????????
    <html:option?value="0">請(qǐng)選擇&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</html:option>
    ?????????????
    <html:options?collection="idlist"?property="tbEngineFilereadId"?labelProperty="tbEngineFilereadId"/>
    ?? </html:select>

    當(dāng)選擇下拉框時(shí),就會(huì)觸動(dòng)"Change_Select()"事件:
    var?req;
    var?dataDiv;
    var?dataTable;
    var?dataTableBody;
    function?Change_Select()
    {
    ????dataTableBody
    =document.getElementById("lendingcartDataBody");
    ????dataTable
    =document.getElementById("lendingcartData");
    ????dataDiv
    =document.getElementById("popup");
    ????
    ????var?zhi
    =document.getElementById('tbEngineFilereadId').value;
    ????var?url
    ="returnBlueprintPage.go?method=getLendingCart&id="+zhi;
    ????
    ????
    if(zhi=="0"){
    ????????alert(
    "請(qǐng)選擇您要察看的信息");
    ?????????????????
    return;
    ????}
    else{
    ????????
    if(window.XMLHttpRequest)
    ????????
    {
    ????????????req
    =new?XMLHttpRequest();
    ????????}
    else?if(window.ActiveXObject)
    ????????
    {
    ????????????req
    =new?ActiveXObject("Microsoft.XMLHTTP");
    ????????}

    ????????
    ????????
    if(req)
    ????????
    {
    ????????????req.open(
    "GET",url,true);
    ????????????req.onreadystatechange
    =callback;
    ????????????req.send(
    null);
    ????????}

    ????}

    }


    function?callback()
    {
    ????
    if(req.readyState?==?4)
    ????
    {
    ????????
    if(req.status?==?200)
    ????????
    {
    ????????????
    //alert(req.responseText);
    ????????????document.getElementById("results").innerHTML=req.responseText;
    ????????}
    else{
    ????????????alert(
    "Not?able?to?retrieve?description"+req.statusText);
    ????????}

    ????}

    }

    這個(gè)js代碼也不難,關(guān)鍵就在于"document.getElementById("results").innerHTML=req.responseText;"
    我沒有用JS來拼出頁面,是考慮到頁面的安全性問題,所以我采取了在后臺(tái)拼出頁面的做法。

    最后看看action是怎樣實(shí)現(xiàn)的:
    /**?
    ?????*?根據(jù)借閱號(hào)獲得借閱信息?
    ?????
    */

    ????
    public?ActionForward?getLendingCart(
    ????????????ActionMapping?mapping,
    ????????????ActionForm?form,
    ????????????HttpServletRequest?req,
    ????????????HttpServletResponse?res)
    {
    ????????
    ????????String?readID
    =(String)req.getParameter("id");
    ????????
    ????????TbEngineFileread?tef
    =lendingCartsService.getLendingCartbyID(readID);
    ????????
    ????????MYhb?yhb
    =lendingCartsService.getBM(tef.getTbEngineFilereadJyr());
    ????????String?jyrname
    =yhb.getMYhbXm();
    ????????String?jyrbmid
    =yhb.getMBm().getMBmBmbh();
    ????????String?jyrbmname
    =yhb.getMBm().getMBmMc();
    ????
    ????????MYhb?yhb1
    =lendingCartsService.getBM(tef.getTbEngineFilereadDjr());
    ????????String?djrname
    =yhb1.getMYhbXm();
    ????????String?djrbmid
    =yhb1.getMBm().getMBmBmbh();
    ????????String?djrbmname
    =yhb1.getMBm().getMBmMc();
    ????????
    ????????String?date
    =tef.getTbEngineFilereadGetTime().substring(0,11);
    ????????
    ????????String?redate
    ="";
    ????????
    if(tef.getTbEngineFilereadEndTime()!=null){
    ????????????redate
    =tef.getTbEngineFilereadEndTime().substring(0,11);
    ????????}

    ????????
    ????????res.setContentType(
    "text/xml;charset=GB2312");
    ????????res.setHeader(
    "Cache-Control","no-cache");
    ????????String?xml
    ="";
    ????????xml
    +="<table?width='100%'?border='1'?cellpadding='0'?cellspacing='0'?style='border-collapse:?collapse;?border-top-width:?0'?bordercolor='#426EB4'>";
    ????????xml
    +="<tbody>";
    ????????xml
    +="<tr>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>檔案分類ID</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='text'?name='tbEngineFilereadSortId'?class='smallInput'?size='15'?maxlength='15'?value="+tef.getTbEngineFilereadSortId()+"?readonly='true'>"+"</td>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>機(jī)械設(shè)備ID</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='text'?name='tbEngineFilereadEgineId'?class='smallInput'?size='15'?maxlength='15'?value="+tef.getTbEngineFilereadEgineId()+"?readonly='true'>"+"</td>";
    ????????xml
    +="</tr>";
    ????????xml
    +="<tr>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>藍(lán)圖ID</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='text'?name='tbEngineFilereadBluePrintId'?class='smallInput'?size='15'?maxlength='15'?value="+tef.getTbEngineFilereadBluePrintId()+"?readonly='true'>"+"</td>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>備注</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='text'?name='tbEngineFilereadMemo'?class='smallInput'?size='15'?maxlength='15'?value="+tef.getTbEngineFilereadMemo()+"?>"+"</td>";
    ????????xml
    +="</tr>";
    ????????xml
    +="<tr>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>借閱時(shí)間</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='text'?name='tbEngineFilereadGetTime'?class='smallInput'?size='15'?maxlength='15'?value="+date+"?readonly='true'>"+"</td>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>歸還時(shí)間</span></td>";
    ????????xml
    +="<td?width='30%'>";
    ????????xml
    +="<input?type='text'?name='tbEngineFilereadEndTime'?class='smallInput'?size='15'?maxlength='15'?value="+redate+">";????
    ????????xml
    +="<img?src='../js/date/img.gif'?id='f_trigger_c'?style='cursor:?pointer;?border:?1px?solid?red;'??title='Date?selector'?onmouseover=\"this.style.background='red';\"?onmouseout=\"this.style.background=''\"?/>";????
    ????????xml
    +="<script?type=\"text/javascript\">?";
    ????????xml
    +="Calendar.setup({?inputField?????:????\"tbEngineFilereadEndTime\",??ifFormat???????:????\"%Y-%m-%d\",?button?????????:????\"f_trigger_c\",??align??????????:????\"Tl\",?singleClick????:????\"true\"?});";
    ????????xml
    +="</"+"script>";
    ????????xml
    +="</td>";
    ????????xml
    +="</tr>";
    ????????xml
    +="<tr>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>借閱人</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='hidden'?name='tbEngineFilereadJyr'?value="+tef.getTbEngineFilereadJyr()+"?>";
    ????????xml
    +="<input?type='text'?name='tbEngineFilereadJyrmc'?class='smallInput'?size='15'?maxlength='15'?value="+jyrname+"?readonly='true'>"+"</td>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>借閱人部門</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='hidden'?name='tbEngineFilereadJyrbm'?value="+jyrbmid+"?>";
    ????????xml
    +="<input?type='text'?name='tbEngineFilereadJyrbmmc'?class='smallInput'?size='15'?maxlength='15'?value="+jyrbmname+"?readonly='true'>"+"</td>";
    ????????xml
    +="</tr>";
    ????????xml
    +="<tr>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>登記人</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='hidden'?name='tbEngineFilereadDjr'?value="+tef.getTbEngineFilereadDjr()+"?>";
    ????????xml
    +="<input?type='text'?name='tbEngineFilereadDjrmc'?class='smallInput'?size='15'?maxlength='15'?value="+djrname+"?readonly='true'>"+"</td>";
    ????????xml
    +="<td?width='20%'?class='td1_a'><span?class='STYLE1'>登記人部門</span></td>";
    ????????xml
    +="<td?width='30%'>"+"<input?type='hidden'?name='tbEngineFilereadDjrbm'?value="+djrbmid+"?>";
    ????????xml
    +="<input?type='text'?name='tbEngineFilereadDjrbmmc'?class='smallInput'?size='15'?maxlength='15'?value="+djrbmname+"?readonly='true'>"+"</td>";
    ????????xml
    +="</tr>";
    ????????xml
    +="</tbody>";
    ????????xml
    +="</table>";
    ????????
    try?{
    ????????????res.getWriter().write(xml);
    ????????}
    ?catch?(IOException?e)?{
    ????????????
    //?TODO?自動(dòng)生成?catch?塊
    ????????????e.printStackTrace();
    ????????}

    ????????
    return?null;
    ????}

    這段代碼雖然長(zhǎng),但不難。

    至此,從下拉框選取內(nèi)容的示例就完成了。

    posted on 2006-08-08 13:28 千山鳥飛絕 閱讀(10909) 評(píng)論(3)  編輯  收藏 所屬分類: Ajax

    FeedBack:
    # re: 運(yùn)用Ajax通過select下拉框獲得數(shù)據(jù)
    2006-09-12 11:37 | 吳加前
    個(gè)人感覺,你這個(gè)沒有符合MVC模型,如果需要修改一下頁面下面顯示的樣式的話,那還要到ACTION里修改,有點(diǎn)麻煩了!!  回復(fù)  更多評(píng)論
      
    # re: 運(yùn)用Ajax通過select下拉框獲得數(shù)據(jù)
    2006-09-13 13:35 | 千山鳥飛絕
    這個(gè)我也考慮過,還有一種方式解決這個(gè)問題,就是用js來控制表格。
    但是這樣也過多的給客戶端暴露了表的結(jié)構(gòu)。

    所以用哪種形式,需要看具體情況而定。  回復(fù)  更多評(píng)論
      
    # re: 運(yùn)用Ajax通過select下拉框獲得數(shù)據(jù)[未登錄]
    2014-08-06 14:44 | hawk
    String xml="";
    xml+="<tabl........................>";
    var table=".................... ";這樣也應(yīng)該是可以的  回復(fù)  更多評(píng)論
      
    正在閱讀:



    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(35)

    隨筆檔案

    文章分類

    文章檔案

    好友的blog

    我的其他blog

    老婆的Blog

    搜索

    •  

    積分與排名

    • 積分 - 775144
    • 排名 - 56

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲一级免费毛片| 老司机免费午夜精品视频| 亚洲色欲www综合网| 亚洲av色福利天堂| 久久亚洲精品国产精品黑人| 国产亚洲精品xxx| 久久精品国产亚洲av四虎| 亚洲av片劲爆在线观看| 色婷婷六月亚洲婷婷丁香| 久久亚洲AV午夜福利精品一区 | 国产成年无码久久久免费| 两个人看的www免费视频中文| 在线观看免费视频一区| 毛片免费在线观看| 最近最新高清免费中文字幕| 亚洲成年人免费网站| 中字幕视频在线永久在线观看免费| 日韩亚洲国产高清免费视频| 扒开双腿猛进入爽爽免费视频 | 在线看片免费人成视频福利| 久久国产精品免费专区| 亚洲精品视频在线观看免费| 最新免费jlzzjlzz在线播放| 国产伦精品一区二区三区免费下载 | 亚洲一卡一卡二新区无人区| 久久精品国产亚洲AV未满十八| 免费人人潮人人爽一区二区| 久久久久久av无码免费看大片 | 亚洲av乱码一区二区三区按摩| 最好2018中文免费视频| a级毛片免费全部播放| 最近免费中文在线视频| 精品少妇人妻AV免费久久洗澡| 免费在线观看黄色毛片| 久久亚洲综合色一区二区三区| 亚洲色图古典武侠| 国产AV无码专区亚洲AV麻豆丫 | 国产精品亚洲精品观看不卡| 极品色天使在线婷婷天堂亚洲 | 亚洲国产高清国产拍精品| xxxxx做受大片在线观看免费|