來呈現不同的內容
像是表格就是其中一例
在這裡寫一個可以依照使用者設定產生他所需要的表格大小
類似的方法也可以應用在像是填寫某些人員資料
但你又不曉得使用者會填寫幾個人的情況
只要隨使用者的需求動態產生即可
<body>
<form id="form1" runat="server">
<div>
列:<asp:DropDownList ID="Row" runat="server" AutoPostBack="True">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
行:<asp:DropDownList ID="Column" runat="server" AutoPostBack="True">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList
<asp:Table ID="tableExample" runat="server" BorderColor="#FFFFFF" BorderStyle="Solid"
BorderWidth="1px" CellPadding="0" CellSpacing="0" GridLines="Both">
</asp:Table>
</div>
</form>
</body>
protected void Page_Load(object sender, EventArgs e)
{
TableCell TCell;
TableRow TRow;
int RowNumber = int.Parse(Row.SelectedValue);
int ColumnNumber = int.Parse(Column.SelectedValue);
for (int i = 0; i < RowNumber; i++)
{
TRow = new TableRow();
TRow.ForeColor = Color.Yellow;
TRow.Width = Unit.Pixel(300);
TRow.Height = Unit.Pixel(30);
if (i % 2 == 0)
TRow.BackColor = Color.BlueViolet;
else
TRow.BackColor = Color.Green;
for (int j = 0; j < ColumnNumber; j++)
{
TCell = new TableCell();
Label lb = new Label();
lb.ID = "exampleLabe" + RowNumber * i + j;
lb.Text = "範例" + (RowNumber * i + j).ToString();
lb.ForeColor = Color.Yellow;
TCell.Controls.Add(lb);
TCell.Width = Unit.Pixel(int.Parse(TRow.Width.Value.ToString()) / ColumnNumber);
TCell.HorizontalAlign = HorizontalAlign.Center;
TRow.Cells.Add(TCell);
}
tableExample.Rows.Add(TRow);
}
}
TableRow代表的是每列的物件而TableCell代表的是每列的每一格(就是行)
這邊是以使用者選擇的行列數來決定產生幾行幾列
每列寬300px高30px
在TableCell中塞入Label物件顯示內容
如果需要設定CSS可以使用CssClass的屬性
跨欄或跨列可以使用ColumnSpane跟RowSpan設定
假設使用者要輸入十筆資料
那麼你只需要用迴圈findControl十次
而你要find的ID可以用"exampleLabe" + RowNumber * i;之類的方式產生
如此就能用字串組合的方式找到你要的ID
以下是執行結果



沒有留言:
張貼留言