dwz框架的table优化,增加选定行处理。

本文介绍了如何优化dwz框架中的table,使其能更方便地获取选定行的某列值。通过修改dwz.ui.js和dwz.stable.js文件,实现了前台页面自定义函数接收并处理dwz框架传递的参数。同时,验证了在一个页面中有多个table时,它们之间不会相互影响。示例代码展示了如何实现这一优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于不知道作者是如何设计的,不值得dwz框架如何得到选定行的某列的值,看示例还得设这什么row,rel属性,不如改进一下,方便自己使用。

需要解决3个问题:

1、前台页面table自定义事件处理函数问题

2、前台页面自定义函数接收dwz框架传递过来的参数(实际上是tr的click事件,但是是在dwz框架里)

3、如果一个页面有两个table,他们之间相互影响吗? (这个问题实际上现在就可以回答,但是还是用例子验证一下比较好。经过验证,两个table不会冲突,因为想一下jquery的原理,他是对每个table进行了事件绑定,所以影响不会超出他绑定的table。这个对于理解dwz那复杂的jquery的$代码还是有好处的。)

个人理解:dwz框架对检索到的当前页面的每个table都执行了jTable()函数,即对该table该绑定的事件都绑定了,但是如果在jtable的开头声明一个变量的话,两个table初始化时会不会相互影响呢。说到底dwz 是个js框架,js都是函数,最终都是要在同个页面解释执行的,后者很可能会覆盖前者的变量。不考虑这么多了,反正我增加的自定义事件,只是初始化时把函数名传过来,最终还是在本table的tr的click中执行的,因此变量只是起了个传递的作用,外部并不调用它。因此,执行上没有问题,而且我也已经验证过了多个table不会影响。

下面就上代码吧:

1.dwz.ui.js

    //tables
    //alert('初始化dwz.ui.table');
    //alert($("table.table", $p).length);
    //原来的初始化语句
    //$("table.table", $p).jTable();

    //优化后的初始化语句,让外部可以获取到点击某行选中的值
    $("table.table", $p).each(function(){
      var $this=$(this);
      var opts={};
      if ($this.attr("onselrow")) opts.onselrow= $this.attr("onselrow");
      $this.jTable(opts);

    });
 

2.dwz.stable.js

    $.fn.jTable = function(options){
        //alert('运行dwz.stable.jtable');
        //alert(options);
        var onselrow=options.onselrow;   //!!dwz初始化时,将页面的table的onselrow属性规定的函数名字传进来。
        //alert(onselrow);

        ......

                ........

                $tr.click(function(){
                    //根据前台页面table设置的onselrow事件处理函数名字,在这里加上参数,形成新的函数,并调用。
                    //即:在这个js框架里获取到选定行的第0列的值,然后传递给前台的js函数中。
                    //1.要求前台onselrow="doseltablerow_menulist",只传函数名字,不带();
                    //2.要求前台js要有对应接收参数:function doseltablerow_menulist(a1){....}
                    //alert('选择了行');
                    //alert($tr.find("td").length);
                    var $this=$(this);
                    //alert($this.find("td:first").text());
                    var col0=$this.find("td:first").text();
                    //alert("col0="+col0);
                    if(onselrow!=null && onselrow!="undefined")
                    {
                      var newfunc=onselrow + "('" + col0 + "');";
                      //alert(newfunc);
                      eval(newfunc);
                    }

                    //
                    $trs.filter(".selected").removeClass("selected");

                   .....

3.前台js和html

<script>

  function doseltablerow_menulist(a1)
  {
    //alert(a1);
    var $edt_key=$("#tbl_menulist_selrowkey");
    $edt_key.val(a1);
  }

</script>



            <div class="panelBar">
                <ul class="toolBar">
                    <li><a class="add" href="#" οnclick="alert({sid_user});return false;"><span>添加</span></a></li>
                    <li><a class="delete" href="demo/common/ajaxDone.html?uid={sid_user}" target="ajaxTodo" title="确定要删除吗?" warn="请选择一个用户"><span>删除</span></a></li>
                    <li><a class="edit" href="demo_page4.html?uid={sid_user}" target="navTab" warn="请选择一个用户"><span>修改</span></a></li>
                    <li class="line">line</li>
                    <li><a class="icon" href="demo/common/dwz-team.xls" target="dwzExport" targetType="navTab" title="实要导出这些记录吗?"><span>导出EXCEL</span></a></li>
                    <li><a class="icon" href="javascript:$.printBox('w_list_print')"><span>打印</span></a></li>
                </ul>
            </div>
            
            <div id="w_list_print">      
                <input id="tbl_menulist_selrowkey" type='text'>      
                <table id='tbl_menulilst' class="table" onselrow="doseltablerow_menulist" width="98%" targetType="navTab" asc="asc" desc="desc" layoutH="100">
                     <thead>
                        <tr valign='middle'>
                          <th align='center' style='display:none'>编码</th>
                          <th align='center'>菜单名称</th>
                          <th align='center'>链接地址</th>
                          <th align='center'>默认图标</th>
                          <th align='center'>打开图标</th>
                        </tr>
                  </thead>
                  
                  <tbody>
                        <%
                          if(rs.size()>0)
                          {
                            for(int i=0;i<rs.size();i++)
                            {
                              //String menu_id=((HashMap)rs.get(i)).get("menu_id")==null?"":((HashMap)rs.get(i)).get("menu_id").toString();
                              String menu_bm=db.getListValue(rs,i,"right_bm");
                              String menu_name=db.getListValue(rs,i,"meunname");
                              String menu_link=db.getListValue(rs,i,"link_addr");
                              String menu_ico=db.getListValue(rs,i,"imgname");
                              String menu_icoopen=db.getListValue(rs,i,"imgnameopen");
                              String menu_name_color=menu_bm.length()==3?"<font color='red'>" + menu_name + "</font>":menu_name;
                              //
                              out.println("<tr class='tr_row' target='sid_user' rel='"+i+"' >");
                              //out.println("  <td align='left'>" + menu_id + "</td>");
                              out.println("  <td align='left' style='display:none'>" + menu_bm + "</td>");
                              out.println("  <td align='center'>" + menu_name_color + "</td>");
                              out.println("  <td align='center'>" + menu_link + "&nbsp;</td>");
                              out.println("  <td align='center'>" + menu_ico + "&nbsp;</td>");
                              out.println("  <td align='center'>" + menu_icoopen + "&nbsp;</td>");
                              out.println("</tr>");
                            }
                          }
                        %>
                  </tbody>
               </table>
               
               <div class="panelBar">
                    <div class="pages">
                        <span>显示</span>
                        <select class="combox" name="numPerPage" οnchange="navTabPageBreak({numPerPage:this.value})">
                            <option value="20">20</option>
                            <option value="50">50</option>
                            <option value="100">100</option>
                            <option value="200">200</option>
                        </select>
                        <span>条,共${totalCount}条</span>
                    </div>
                    
                    <div class="pagination" targetType="navTab" totalCount="200" numPerPage="20" pageNumShown="10" currentPage="1">
                    
                    </div>
    
               </div>           
            </div>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值