双休去老婆家里,呵呵。
上个星期5正式开始用vb.net做项目,一个很小的项目,简单来说就是一个“公司活动”的web应用。表也很少9张表。通过一天的熟悉,发现公司的框架,有一些不爽的地方,个人觉得最大的一个问题是对数据库的操作,都要写一个存储过程,这样是不是太麻烦了,还有就是操作数据库使用是微软的System.Data.OleDb有点不习惯,需要自己去转换数据,仿佛回到了java原始操作JDBC的阶段。 呵呵,可能用ORM多了。
今天分到的任务就是:
熟悉ASP.net的一个组件:ListView.呵呵,貌似没事difficult啦。做完就去学些别的,我想改下公司现在的vb.net的框架。。
OK,来先熟悉熟悉ListView组件吧。MSDN里的解释:ASP.NET的listview是一个数据控件,ListView 控件与 DataList 和 Repeater 控件类似,可用在任何重复结构中显示数据。与这两个控件不同的是,ListView 控件支持编辑、插入和删除操作,以及排序和分页。ListView 的分页功能是通过新的 DataPager 控件实现的。
ListView 控件是一个可高度自定义的控件,它允许您使用模板和样式来定义其用户界面。象 Repeater、DataList 和 FormView 控件一样,ListView 控件中的模板也没有预定义为在浏览器中呈现特定的用户界面。
具体要实现的页面展示:
别看很简单,其实是要查询2张表,Meal Provided,和Transportation Privided是大类,后面的checkbox是小类,所以,ListView接收的数据也要经过处理。
Ok,接下来去看看asp:List里一些属性,先看下代码片段:
<LayoutTemplate>
<table …….>
<tr runat="server" ID="itemPlaceholder"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Name") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
<tr runat="server" ID="itemPlaceholder"></tr>是定义listview的迭代的位置
上述代码红色部分是很重要滴,来讲一下其作用:
DataSourceID:绑定到数据源控件,如 SqlDataSource 控件。 其实就是直接去操作数据库。还有一个绑定数据的属性DataSource,可以绑定到各种对象,包括 ADO.NET 数据集和数据读取器以及内存中的结构(如集合)。
LayoutTemplate:布局模板,指定定义容器对象的根组件,如一个table、div或span组件,它们包装ItemTemplate或GroupTemplate定义的内容。
ItemTemplate:项目模板,控制项目内容的显示
同时也可以定位到具体位置去循环迭代,代码片段:
<LayoutTemplate>
<table border="2">
<thead>
<tr>
<th>ProductID</th>
<th>ProductName</th>
<th>UnitPrice</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat ="server" ID="ItemPlaceHolder"></asp:PlaceHolder>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("ProductID")%></td>
<td><%# Eval("ProductName")%></td>
<td><%# Eval("UnitPrice")%></td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:PlaceHolder runat ="server" ID="ItemPlaceHolder"></asp:PlaceHolder>就是在指定位置使用ItemTemplate
在来看看asp.net里listview的事件,可以在MSDN上查到http://msdn.microsoft.com/zh-cn/library/bb341994.aspx 。
那怎么设置ListView里的数据源呢,我理解有2种形式:
1.在Page_Load,里指定个数据源。代码片段:
页面代码:
<asp:ListView ID="InvitationLV" runat="server" DataSourceID="" OnInit="InvitationLV_Init">
接着在相对应的aspx里添加init事件代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ListView.DataSource=....
End If
End Sub
2.就是在页面上使用asp:XmlDataSource等标签定义个datasourceId。代码片段:
DataFile="~/Properties.xml"></asp:XmlDataSource>
Persist