Datagrid2

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

  //***************************************************************************************
   //第二組:自己處理Select\Delete 事件
   //***************************************************************************************


    /* **************************************************************
     ※ 以下程序段功能: 根具條件產生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() 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 + 1;
               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_new(dtgTitle);

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

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

              return strReturn;
     }

  /*----------------DataGrid 表頭列--------------------*/
  private String GetDtgTitle_new(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";
         //循環寫 <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_new(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+"("+dtgItemCount+")\"   href=\"#\">"+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+"("+dtgItemCount+")\"   href=\"#\">"+deleteText+"</a></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_new(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  href=\"" + strPar + "\"> 上10頁 </a> \n";
           }

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

           //顯示下一標簽組連接符號(>>>)
            if  (iCurrentGroup*10<pageCount)
            {
                int NextPage=iCurrentGroup*10+1;
             String strPar = URL + "?" + "dtgCurrentPage"+dtgID+"=" + NextPage + "";
             strReturn += " <a  href=\"" + strPar + "\"> 下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;
   }