項目依然在調試,要總結的話總是感覺不太舒服,畢竟還沒有完呢,所以現在想依次把這個系統中用到的一些比較麻煩的知識點記錄到這,以便別人查閱(這可是偶千辛萬苦從網上查資料整出來的喲。。。)
首先在頁面上定義一個table控制項,命名為autoTable。然後在某個事件中添加以下代碼(我是在按鈕點擊事件,當然你可以在頁面載入事件咯。。)
等會兒,我先說明幾個概念,不然你會暈倒的。
一個表格是由n多個行組成的,即TableRow,而每一行又是由n多個單元組成的,也可以叫做儲存格,即TableCell。
因此動態產生表格的基本演算法呢就是首先不斷的往每一個對象中添加儲存格,這裡要注意每次添加的都是一個新的儲存格,new出來的TableCell,不然最後的結果是無論你迴圈多少次只是添加了一個格(TableCell)。然後呢就是將添加了TableCell的TableRow添加到autoTable中,這個和TableCell一樣,也是每添加一個都要new出來一個。最後就得到一個動態添加表格效果。
[code=C#]
//產生表格<br /> TableRow tRow;//定義資料表行<br /> TableCell tCell;//定義資料表格<br /> Label lblTitle;//定義標題標籤<br /> Label lblChapter;//定義章節標籤<br /> TextBox txtValue;//定義用來輸入分數的文字框<br /> numRows = 3;<br /> numCells = 3;<br /> //首先是給定了幾行幾列,<br /> for (int iRow = 0; iRow <= numRows; iRow++)<br /> {<br /> tRow = new TableRow();//new出一個行來<br /> for (int jCol = 0; jCol <= numCells; jCol++)<br /> {<br /> //判斷如果是第一行則添加表頭,表頭為難度等級<br /> if (iRow == 0)<br /> {<br /> //當為第一行時執行下列代碼<br /> if (jCol == 0)<br /> {<br /> //當為第一行第一列時<br /> tCell = new TableCell(); //new出一個cell<br /> lblTitle = new Label(); //這是我自己用的一個lable,你可以參考<br /> lblTitle.Text = "難度係數:"; //給label賦值<br /> lblTitle.Width = 80; //設定寬度<br /> tCell.Controls.Add(lblTitle); //添加label到cell中<br /> tRow.Cells.Add(tCell); //添加Cell到TableRow中<br /> }<br /> else<br /> {<br /> //如果不是第一列則:<br /> tCell = new TableCell();<br /> lblTitle = new Label();<br /> lblTitle.Text = jCol.ToString().Trim();<br /> tCell.HorizontalAlign = HorizontalAlign.Center;<br /> tCell.Controls.Add(lblTitle);<br /> tRow.Cells.Add(tCell);<br /> }<br /> }<br /> else<br /> {<br /> //如果是第一列,則添加列名。<br /> if (jCol == 0)<br /> {<br /> tCell = new TableCell();<br /> lblChapter = new Label();<br /> lblChapter.Text = strChapter[iRow - 1].ToString() + ":";<br /> lblChapter.Width = 80;<br /> tCell.Controls.Add(lblChapter);<br /> tCell.HorizontalAlign = HorizontalAlign.Center;<br /> tRow.Cells.Add(tCell);<br /> }<br /> else<br /> {<br /> //不是第一行第一列則新增內容<br /> tCell = new TableCell();<br /> txtValue = new TextBox();<br /> txtValue.ID = "txt" + iRow.ToString() + jCol.ToString();//給控制項設定id,因為我以後要用到這個控制項。<br /> txtValue.Text = "0";<br /> txtValue.Text = txtValue.Text.Trim();<br /> tCell.Controls.Add(txtValue);<br /> tRow.Cells.Add(tCell);<br /> }<br /> }<br /> }<br /> autoTable.Rows.Add(tRow);//添加TableRow<br /> }<br />
[/code]
看圖:
當然如果要想得到表格中的資料也是個麻煩的事,經過一番學習,最後使用了ajax,在vs2008中就是updatepanel。
不過你要還是有另外好的方法可以告訴我,先行感謝!
新部落格