DataGrid3

Posted on 2005-11-22 13:37  飞鼠  阅读(225)  评论(0)    收藏  举报


   //***************************************************************************************
    //第三組:自己處理Select\Delete 事件 \添加CheckBox列
    //***************************************************************************************


     /* **************************************************************
      ※ 以下程序段功能: 根具條件產生DataGrid
          參數:        1. String URL               :調用此方法的頁面
                       2. java.util.Hashtable ht[] :數據源
                       3. String[] ColumnText      :記錄數據索引的Key值
                       4. String[] dtgTitle        :表頭數組
                       5. String[] dtgRight        :數字靠右文字靠左原則
                       6. int PageSize             : 每頁顯示的筆數
     ************************************************************** */
            public String GetDataGrid_chk() throws Exception {
                String strReturn="";
                int idtgCurrentPage=1;//DataGrid當前頁面
                int ItemCount =0; //數據總數
                int colSpan ; //PagerStyle佔用縂 <TD> 數目
                int pageCount=1; //計算所有數據共有多少頁

                if (ht==null)
                {
                    return "<tr><td style= \"display:none\"> </td></tr>\n";
                }
                else
                   ItemCount = ht.length; //數據總數

               if (columnText==null)
               {
                   return "<tr><td style= \"display:none\"> </td></tr>\n";
               }
               else

                if(ItemCount==0) //沒有數據時則不顯示DataGrid
                    return "<tr><td style= \"display:none\"> </td></tr>\n";


                //PagerStyle佔用縂 <TD> 數目
                 colSpan = columnText.length + 2;
                if(selectDisplay.equals("") )
                    colSpan++;
                if(deleteDisplay.equals("") )
                    colSpan++;

                 //非法值處理
                if(pageSize<1)
                  {  pageSize=10;}

                  //計算所有數據共有多少頁
              if (ItemCount != 0 && (ItemCount % pageSize) != 0) {
                  pageCount = (ItemCount / pageSize) + 1;
              } else {
                  pageCount = ItemCount / pageSize;
              }
            //當請的頁數超出有效值範圍時:
             try{
                 idtgCurrentPage=Integer.parseInt(dtgCurrentPage[dtgID]);
                 if(idtgCurrentPage<1)
                     idtgCurrentPage=1;
                 else if(idtgCurrentPage>pageCount){
                     idtgCurrentPage=pageCount;
                 }
                }
             catch(Exception ex) {
                 idtgCurrentPage=1;
             }
             finally{
                 dtgCurrentPage[dtgID]=String.valueOf(idtgCurrentPage);
             }


              //DataGrid 表頭列
              strReturn+=GetDtgTitle_chk(dtgTitle);

               //DataGrid 數據列
               strReturn+=GetDtgItem_chk(selfURL,columnText,dtgRight,idtgCurrentPage,pageSize) ;

               //DataGrid PagerStyle
               strReturn+=GetDtgPagerStyle_chk( selfURL, idtgCurrentPage,  pageSize, ItemCount, colSpan);

               return strReturn;
      }

   /*----------------DataGrid 表頭列--------------------*/
   private String GetDtgTitle_chk(String[] dtgTitle) throws Exception {
       String strReturn = "";
          //只寫入一次 </TR>
          strReturn += "<tr class=\"GridHeaderStyle\" align=\"center\" >\n";
          strReturn += "<td style=\"Display:"+selectDisplay+"\" ><nobr>操作</nobr> </td>\n";
          strReturn += "<td style=\"Display:"+deleteDisplay+"\" ><nobr>操作</nobr> </td>\n";
          strReturn += "<td  ><nobr>不終止</nobr> </td>\n";
          strReturn += "<td  ><nobr>筆數</nobr> </td>\n";
          //循環寫 <TD>
          for (int iTitle = 0; iTitle < dtgTitle.length; iTitle++) {
              strReturn += "<td><nobr>" + dtgTitle[iTitle] + "</nobr></td>\n";
          }
         //只寫入一次 </TR>
          strReturn += "</tr>\n";

     //    System.out.println( "-----------------DataGrid 表頭列--------------------\n\n") ;
    //     System.out.println(strReturn) ;

       return strReturn;
   }

   /*----------------DataGrid 數據列--------------------*/
    private String GetDtgItem_chk(String URL,String[] ColumnText,String[] dtgRight,int idtgCurrentPage, int PageSize) throws Exception {
        String strReturn = "";

        /*-----------------DataGrid 數據列--------------------*/
          for(int iRow=0;iRow<ht.length;iRow++) //數據以列循環
          {
              int dtgItemCount= iRow+1;//數據索引列

              //控制換頁(顯示當前頁)
              if (dtgItemCount <= (idtgCurrentPage - 1) * PageSize ||
                  dtgItemCount > idtgCurrentPage * PageSize) {
                  continue; //如果此筆數據不在dtgCurrentPage所記錄的當前頁的顯示範圍,則跳出循環體
              }

              //DataGrid數據列的 TR
              int selectItem=Integer.parseInt(dtgSelectItem[dtgID]);
              if (selectItem == dtgItemCount) { //當前選擇列:突出標示顔色
                  strReturn +=
                          " <tr  align=\"left\" class=\"SelectedItemStyle\"> \n";
              } else if (dtgItemCount % 2 == 0) { //如果是偶數列則使用不同的Css樣式,以示區分
                  strReturn +=
                          " <tr  align=\"left\" class=\"AlternatingItemStyle\"> \n";
              } else { //其它無特殊處理
                  strReturn += " <tr  align=\"left\" > \n";
              }

             //DataGrid數據列的 固定 <TD>
             //   1.選取
             String strSelect=URL+"?"+"action=Dtg_Select&dtgSelectItem"+dtgID+"="+dtgItemCount+"";
             //String onclick="javascript:self.parent.document.Form1.all['action'].value='Select';self.parent.document.Form1.submit();";
             strReturn += "<td align=\"center\"  style=\"Display:"+selectDisplay+"\" ><a  onclick=\"Dtg_Select"+dtgID+"()\"   href=\""+strSelect+"\">"+selectText+"</a></td>\n";
            // strReturn += "<td align=\"center\"><nobr>"+dtgItemCount+"</nobr> </td>\n";

             //   2.刪除
             String strDelete=URL+"?"+"action=Dtg_Delete&dtgSelectItem"+dtgID+"="+dtgItemCount+"";
             //String onclick="javascript:self.parent.document.Form1.all['action'].value='Select';self.parent.document.Form1.submit();";
             strReturn += "<td align=\"center\"  style=\"Display:"+deleteDisplay+"\" ><a  onclick=\"Dtg_Delete"+dtgID+"()\"   href=\""+strDelete+"\">"+deleteText+"</a></td>\n";


             //CheckBox
             String ifChecked="";

             if(checked[dtgItemCount]==null)
              {ifChecked="";}
              else if(checked[dtgItemCount].toString().trim().equals("1") )
              {ifChecked="Checked";}
              else
               { ifChecked="";  }
             strReturn += "<td align=\"center\" ><input type=\"checkbox\"  "+ifChecked+"  id=\"chk"+dtgItemCount+"\" name=\"chk"+dtgItemCount+"\"  value=\"1\" /> </td>\n";
             strReturn += "<td align=\"center\"><nobr>"+dtgItemCount+"</nobr> </td>\n";

 

              //DataGrid數據列的 動態 <TD>
              for (int i = 0; i < ColumnText.length; i++) {

                  //出去空白:空白補:nbsp
                  String Text= com.bshine.Util.ClsCommFuns.doNull( ht[iRow].get(ColumnText[i]).toString() ) ;
                  Text+="&nbsp";
                     System.out.println( "--------"+dtgTitle[i]+"---------"+ColumnText[i]+"--------------------\n\n") ;

                  if (dtgRight[i].equals("Right")) { //數字靠右對齊
                      strReturn += "<td align=\"right\" ><nobr>" + Text +
                              "</nobr></td>\n";
                  } else {//文字靠左對齊
                      strReturn += "<td><nobr>" +Text +
                              "</nobr></td>\n";
                  }
              }//end for (int i = 0; i < ColumnText.length; i++)

              strReturn+="</tr>\n";
          }//end  for(int iRow=0;iRow<ht.length;iRow++) //數據以列循環

       //   System.out.println( "-----------------DataGrid 數據列--------------------\n\n") ;
       //   System.out.println(strReturn) ;
        return strReturn;
    }

    /*----------------DataGrid PagerStyle--------------------*/
  private String GetDtgPagerStyle_chk(String URL,int idtgCurrentPage, int PageSize,int ItemCount, int colSpan) throws Exception {
      String strReturn = "";

     // System.out.println( "*-----------------DataGrid PagerStyle--------------------*") ;
          /*-----------------DataGrid PagerStyle--------------------*/

         // int ItemCount = ht.length; //數據總數
        //  int colSpan = ColumnText.length + 2; //PagerStyle佔用縂 <TD> 數目
          int pageCount = 1; //記錄數據集的縂頁數

          //計算所有數據共有多少頁
          if (ItemCount != 0 && (ItemCount % PageSize) != 0) {
              pageCount = (ItemCount / PageSize) + 1;
          } else {
              pageCount = ItemCount / PageSize;
          }

          //計算當前列顯示在哪一組 (10頁為一組)
          int iCurrentGroup = PageGroup(idtgCurrentPage);

         //<TR><TD>
          strReturn += " <tr  align=\"left\" class=\"GridFooterStyle\"> \n";
          strReturn += "<TD  colSpan=" + colSpan + "  ><nobr>\n";
           //共25頁 第2頁
          strReturn+="共"+pageCount+"頁&nbsp;&nbsp;";
          strReturn+="第"+idtgCurrentPage+"頁&nbsp;&nbsp;&nbsp;&nbsp;";


           //顯示上一標簽組連接符號(<<<)
          if  ((iCurrentGroup-1) >= 1)
          {
              int LastPage=(iCurrentGroup-1)*10;
           String strPar = URL + "?" + "dtgCurrentPage"+dtgID+"=" + LastPage + "";
           strReturn += " <a  onclick=\"changPage"+dtgID+"('"+LastPage+"')\" href=\"#\"> 上10頁 </a> \n";
          }

          //顯示當前換頁標簽組
          for (int j = 1; j <= pageCount; j++) {
              String strPar = URL + "?" + "dtgCurrentPage"+dtgID+"=" + j + "";
              if (GetPageCount(j,idtgCurrentPage)) { //判斷 j 頁是否為前換頁標簽組
                  strReturn += " <a  onclick=\"changPage"+dtgID+"('"+j+"')\"  href=\"#\">" + j + "</a> \n";
              }
          }

          //顯示下一標簽組連接符號(>>>)
           if  (iCurrentGroup*10<pageCount)
           {
               int NextPage=iCurrentGroup*10+1;
            String strPar = URL + "?" + "dtgCurrentPage"+dtgID+"=" + NextPage + "";
            strReturn += " <a  onclick=\"changPage"+dtgID+"('"+NextPage+"')\"  href=\"#\"> 下10頁 </a> \n";
           }


           //跳轉
           strReturn+="&nbsp;&nbsp;&nbsp;第";
           strReturn+="<input type=\"text\" class=\"gridtextbox\" size=\"3\"   name=\"dtgCurrentPage"+dtgID+"\" id=\"dtgCurrentPage"+dtgID+"\"  value=\""+idtgCurrentPage+"\">";
           strReturn+="頁";
           strReturn+="<input  class=\"gridbutton\" value=\"跳轉\" type=\"button\" onclick=\"javascript:submit()\">";
          strReturn += "</nobr></TD>\n</TR>\n";

  /*---------------結束--DataGrid PagerStyle--------------------*/
 // System.out.println(strReturn) ;


      return strReturn;
  }

 

 

 

 

 


//控制換頁標簽10頁為一組 ,判斷 PageIndex 頁是否顯示
 private  boolean GetPageCount(int PageIndex,int idtgCurrentPage) throws Exception {
     //dtgCurrentPage
     boolean Flag=false;
     int iPageGroup    = PageGroup(PageIndex);      //計算PageIndex顯示在哪一組
     int iCurrentGroup = PageGroup(idtgCurrentPage);  //計算當前列顯示在哪一組

     if(iPageGroup==iCurrentGroup) //如果PageIndex屬於當前顯示組則:顯示
     Flag=true;

     return Flag;
 }

  //計算PageIndex顯示在哪一組
  private  int PageGroup(int PageIndex) throws Exception {
      int CurrentGroup = 1;

     if (PageIndex%10==0 )
         CurrentGroup    = PageIndex/10;
     else
        CurrentGroup    = PageIndex/10 +1;      //計算PageIndex顯示在哪一組

       return  CurrentGroup;
  }

 

 

 


    public void setDtgCurrentPage(String dtgCurrentPage) {

        this.dtgCurrentPage[dtgID] = dtgCurrentPage;
    }

    public void setDtgSelectItem(String dtgSelectItem) {
        this.dtgSelectItem[dtgID] = dtgSelectItem;
    }

    public void setHt(Hashtable[] ht) {
        this.ht = ht;
    }

    public void setDtgRight(String[] dtgRight) {
        this.dtgRight = dtgRight;
    }

    public void setDtgTitle(String[] dtgTitle) {
        this.dtgTitle = dtgTitle;
    }

    public void setDeleteText(String DeleteText) {
        this.deleteText = DeleteText;
    }

    public void setSelectText(String SelectText) {
        this.selectText = SelectText;
    }

    public void setSelectDisplay(String SelectDisplay) {
        this.selectDisplay = SelectDisplay;
    }

    public void setDeletetext(String Deletetext) {
        this.deleteText = Deletetext;
    }

    public void setDeleteDisplay(String DeleteDisplay) {
        this.deleteDisplay = DeleteDisplay;
    }

    public void setSelfURL(String SelfURL) {
        this.selfURL = SelfURL;
    }

    public void setURL(String URL) {
        this.url = URL;
    }

    public void setPageSize(int PageSize) {
        this.pageSize = PageSize;
    }

    public void setColumnText(String[] ColumnText) {
        this.columnText = ColumnText;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setChecked(String[] checked) {
        this.checked = checked;
    }

    public void setChecked(int index,String value) {
       this.checked[index] = value;
   }


    public String getDtgCurrentPage() {
        return dtgCurrentPage[dtgID];

    }

    public int getDtgSelectItem() {
        int item=1;
        try{
             item = Integer.parseInt(this.dtgSelectItem[dtgID]);
        }catch(Exception ex)
        {
            item=1;
        }
        return item;
    }

    public Hashtable[] getHt() {
        return ht;
    }

    public String[] getChecked() {
        return checked;
    }

    public int getItemCount() {
       if(ht==null)
           return 0;
       else
        return ht.length ;
   }

 

    private void jbInit() throws Exception {
    }

}//end  Class