1分6合

核心企业

CORE ENTERPRISE
当前位置:网站1分6合>软件开发 > 正文内容

联合主键的单表维护解决方案

 

通常我们的结果页面都会设置一个复选框,当用户选择某条记录时,把该条记录的主键提交到后台展现逻辑。如下: <TD align="center"> <logic:present id="ResultSet" property="BNDICT_T_Dictionary/businTypeID"> <html:checkbox styleId="checkall" name="list[@name="update"]/BNDICT_T_Dictionary/businTypeID" id="ResultSet" property="BNDICT_T_Dictionary/businTypeID" indexed="true" /> </logic:present> </TD>

       但是有些表是联合主键,如BNDICT_T_Dictionary表,另一个主键是businID,是不是可以再加一个复选框来提交另一个主键值呢?如下:

<TD align="center"> <logic:present id="ResultSet" property="BNDICT_T_Dictionary/businTypeID"> <html:checkbox styleId="checkall" onclick="checkOther("checkall","checktwo")" name="list[@name="update"]/BNDICT_T_Dictionary/businTypeID" id="ResultSet" property="BNDICT_T_Dictionary/businTypeID" indexed="true" />  </logic:present> <logic:present id="ResultSet" property="BNDICT_T_Dictionary/businID"> <html:checkbox styleId="checktwo" style="width:0px;" name="list[@name="update"]/BNDICT_T_Dictionary/businID" id="ResultSet" property="BNDICT_T_Dictionary/businID" indexed="true" /> </logic:present> </TD> 为了在页面上只显示一个复选框,所以我们将第二个复选框的宽度设为0px使其隐藏,当用户选中某条记录前的复选框时,我们通过JS函数使这条记录对应的隐藏的复选框也选中,同样当用户取消选中时,也同样使隐藏的复选框取消选中。需要在页面中增加如下JS函数。     function checkOther(checkall,checktwo){     var checkall = document.getElementsByName(checkall);         var checktwo = document.getElementsByName(checktwo); &nbsp;                   for(var i=0;i<checkall.length;i++)         {           ;  if(checkall[i].checked == true){                 checktwo[i].checked = true;       &nbsp;            &nbsp;   }else if(checkall[i].checked == false){      &nbsp;          checktwo[i].checked = false;  &nbsp;                     &nbsp;  }         }     }        另外我们还要重构全选函数checkAll(),并修改全选框的onclick属性值。 <TD align="center"> <logic:notEqual property="list[@type="BNDICT_T_Dictionary"]/@rowNum" value="0"> <html:checkbox name="chkAll" onclick="checkAll("checkall","checktwo")"/> </logic:notEqual>选择</TD>  
function checkAll(checkall,checktwo)     {         var checkall = document.getElementsByName(checkall);         var checktwo = document.getElementsByName(checktwo);&nbsp;              var ck = window.event.srcElement;             if(ck.checked==true)         {   ;          for(var i=0;i<checkall.length;i++)   &nbsp;         {           &nbsp;     checkall[i].checked = true;         &nbsp;       checktwo[i].checked = true;        &nbsp;          &nbsp;    }    ;     &nbsp;         }else{   &nbsp;         for(var i=0;i<checkall.length;i++)            ; {   &nbsp;             checkall[i].checked = false;  &nbsp;  &nbsp;           checktwo[i].checked = false;              ;    &nbsp;  &nbsp;     }        &nbsp;          }     }      通过传入后台的XML总线上的数据,可以看出两个主键的ID都传到了后台,下面只要在展现逻辑中增加一个数据设置即可 为了保证程序的绝对安全,在修改、删除之前要判断所有主键是否都有值。 另外新增时不能使用主键自动获取。 还有一个好处是,这种页面上的JS操作可以写进项目模板中,从而实现对联合主键的单表维护向导,但前提是属性生成向导中要支持选择多个主键才行。    
彩88-1分6合 大发11选5-1分6合 腾讯三分彩-1分6合 彩乐园-1分6合 彩天下-1分6合 万家彩票-1分6合 快彩网-1分6合