關於修改ASP.NET頁導航的樣式

今早在CSDN論壇上看到一個帖子,是關於如何修改ASP.NET頁導航的樣式的問題。描述如下——
-----------------------------------------------------------------
DataGrid的頁導航有“上一頁/下一頁”和“頁碼”兩種模式,當選擇“頁碼”模式時,如果頁數超過10頁了,就會顯示成:
1 2 3 4 5 6 7 8 9 10 ...
我想請教的是:有沒有比較好的辦法,將後面的...換成中文,例如“更多”
-----------------------------------------------------------------

這個問題初看起來確實有點困難,因爲分頁數字的“...”已經被封裝在DataGrid裏了,而且DataGrid也沒有提供相應的屬性來修改。於是很多朋友就想繼承自DataGrid自己寫一個“個性化”的DataGrid,或用一些第三方控件來實現,這樣做固然可行,但卻大大的增加了開發成本,不到萬不得已,這些方法我覺得還是不用的爲妙。

從另一個角度看,DataGrid到了前臺就是一個普通的<Table>元素(HTML對象),利用DHTML+JavaScript的強大功能,可以在客戶端動態的更改頁面上的任何元素,改幾個字眼自然不在話下……

示例:
後臺代碼——
(在頁面上添加一個新的DataGrid,並設置其分頁爲每頁8條數據,頁導航用“數字”,並在後臺page_load事件中添加如下代碼)
private void Page_Load(object sender, System.EventArgs e)
{
 DataTable table = new DataTable();
 table.Columns.Add("Test",typeof(string));
 for(int i=0;i<100;i++)
  table.Rows.Add(new object[]{"測試數據_"+i});
 this.DataGrid1.DataSource = table;
 this.DataGrid1.DataBind();
}

前臺代碼——
(將一下代碼拷貝到頁面<Head></Head>之間)
<script language="javascript">
<!--
 window.attachEvent("onload",HandleDataGrid);
 
 function HandleDataGrid()
 {
  var dataGrid = document.getElementById("DataGrid1");
  var pageCell =  dataGrid.rows[dataGrid.rows.length -1].cells[0];
  pageCell.childNodes[pageCell.childNodes.length - 1].innerText = "更多";
 }
// -->
</script>

注:分析了一下DataGrid生成的客戶端代碼,發現“...”其實是位於<Table>最後一行的內的最後一個<a>標記,所以可以用pageCell.childNodes[pageCell.childNodes.length - 1]獲取對該標記的引用

-------------------------------------------------------
題外話:
其實很多複雜或難以實現的東西,如果我們從另一個角度去分析,很多時候可以得到簡單的處理方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章