考试系统来的匆匆,赶着日子,匆匆忙忙的做完了。
考试结束了,终于可以轻松会了。
NO,这时候的工作才真正开始,总结才是重头戏。对用到知识的总结,对需求的理解,对项目开发的感悟,对自己学习态度的认识 ……有好多东西,需要我们去一点一点来整理。
每次别人问我收获了多少,学了多少东西的时候,我无言以对,我想不起来,可是如果换一种形式,当大家坐在一起讨论的时候,好多东西,就会脱口而出,意识到,有些东西在开发过程中,已经形成了经验,潜移默化的在融入到身边,成为一种习惯吧。
为什么会想不起来,大多是因为,“太匆匆”。开发项目过程中,一头扎进项目中,忙着理解需求,然后是想着办法,进行实现功能,总是感觉时间不够用。现在想起来,那时真的是十足的“程序猿”,很苦闷。
“太匆匆”蒙蔽了我们的双眼,一心想实现一个功能,考虑欠佳。很形象的一个例子:前两天,米老师安排我们录视频,给二期开发人员看。我录取的视频内容是讲解:动态表格生成界面。于是开始整理这块的知识。无意之间发现,自己当时的一个误区。
看如下界面:根据文本框中输入的数组长度,显示表格行数:
前台代码:
<table id="table1" class="table1" style="border-collapse:collapse;" border="1">
<tbody>
</tbody>
</table>
后台代码:
//单击获取表格事件。
protected void lbtnGetTable_Click(object sender, EventArgs e)
{
//定义数组大小
int intDegree = int.Parse(TextBox1.Text.Trim());
int[] a = new int[intDegree];
//给数组赋值
for (int i = 0; i < intDegree; i++)
{
a[i] = i;
}
//获取数组个数
#region 动态加载表格
//循环添加行
for (int rowcount = 0; rowcount < intDegree; rowcount++)
{
//实例化行对象
HtmlTableRow row = new HtmlTableRow();
//循环添加列
for (int cellcount = 0; cellcount < 2; cellcount++)
{
//实例化列
HtmlTableCell cell;
// Create table header cells for first row.
if (cellcount == 0)
{
cell = new HtmlTableCell();
int b = rowcount + 1;
cell.InnerHtml = "等级" + b;
}
else
{
cell = new HtmlTableCell();
HtmlInputText txt = new HtmlInputText("txt" + rowcount);
txt.Value = a[rowcount].ToString().Trim();
cell.Controls.Add(txt);
}
row.Cells.Add(cell);
}
//向行对象中添加列
table1.Rows.Add(row);
}
#endregion
}
回头再看感悟:通过上述代码,可以看出,代码中赋值的数据量不大,而我却是通过动态生成Table,row,cell来实现。而且可以看到,生成row,cell,的时候需要判断第一行。第一列这些内容,这样就难保不会出错。但是当时,做系统的时候就没有好好想过这个问题,脑袋中闪过一个动态生成表格的念头,就开始折腾,然后,有了如上结果。到现在开始录视频的时候,突然发现,我的数据量不大,当时,可是考虑使用一种比较简单的办法来实现。
通过给“repeat控件”datasours对象绑定数组获得的。
使用Repeat控件,绑定数据源。
前台界面:提前加载好repeat控件。
<table id="table1" class="table1" style="border-collapse:collapse;" border="1">
<tbody>
<asp:Repeater ID="rep1" runat="server">
<ItemTemplate>
<tr class="tr">
<td class="txt c" align="right">
<%# "第" +Container.DataItem +"行" %>
</td>
<td class="txt c" align="right">
<%# Container.DataItem %>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
后台代码:
//单击获取表格事件。
protected void lbtnGetTable_Click(object sender, EventArgs e)
{
//定义数组大小
int intDegree = int.Parse(TextBox1.Text.Trim());
int[] a = new int[intDegree];
//给数组赋值
for (int i = 0; i < intDegree; i++)
{
a[i] = i;
}
//获取数组个数
//使用repeater控件,
#region 绑定数据源为数组。
rep1.DataSource = a;
rep1.DataBind();
#endregion
}
上述对比可以看出生成动态表格代码要比repeate复杂。首先前台我们只需要拖入repeat控件,然后进行数据绑定,后台只需要绑定数据源datasource,databind即可。
有利有弊吧,当初看来动态生成表格,后期也还是用到了,只是想强调:在使用控件或者其他知识的时候,要先分析一下,那个更合适这块地需要。