//***************************************************************************************
//第三組:自己處理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+=" ";
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+"頁 ";
strReturn+="第"+idtgCurrentPage+"頁 ";
//顯示上一標簽組連接符號(<<<)
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+=" 第";
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
浙公网安备 33010602011771号