
下面是在”Source”视图中可以看到的LinqDataSource 的标记. 注意ContextTypeName="NorthwindDataClassesDataContext" -- 这个值是我们在设计器中创建的类型名称 (代码生成器在末尾添加了一个"DataContext" -- 这名字真长!). TableName 设置为我们想要显示的表或属性 -- 本例中设为Employees. 你可以用这种方法绑定任何现有的DataContext 类型和类属性.
绑定界面控件到 LinqDataSource<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="NorthwindDataClassesDataContext" TableName="Employees"> </asp:LinqDataSource>
现在让我们把 DataList连接到 LinqDataSource. 有一个好消息是DataList只关心LINQ查询通过LinqDataSource返回的字段名称 -- 当你不断改进动态 LINQ查询的字段和行结果时会给你方便.
1. 在设计器中选中DataList. 展开智能标签并选择Data Source = LinqDataSource1
2. 自定义一下DataList的ItemTemplate
3. 运行! (按F5 或在快捷菜单中点击 View in Browser)
默认情况下向导会创建一系列绑定的文本标签. 你可以利用设计器在编辑模式下选取你想要的.提示: 这是我通常在”Source”视图中拖放html标记的地方. 在本例中, 我只简单地显示full name, notes, 还有一块显示员工相片的地方. 并把数据转化到一个有两列的表格中.
如果你检查一下DataList的标记, 你会发现ItemTemplate包含一些绑定的文本标签. 从查询中绑定数据是一个非常简单的过程,你只需要在服务器控件字段中, 用经典的ASP样式和VB eval数据绑定语句, 输入<%# Eval("YOURFIELDNAME") %>. 这为显示你想要的数据及格式化它们提供了很大的灵活性. 下面是我自定义的:
EmployeeID:<div> <asp:DataList ID="DataList1" runat="server" DataKeyField="EmployeeID" DataSourceID="LinqDataSource1"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td> <img src="PLACEHOLDER.jpg" class="" style="border: 4px solid white" alt='Photo Number XXX' /> <br /><br /> </td> <td>
<asp:Label ID="EmployeeIDLabel" runat="server" Text='<%# Eval("EmployeeID") %>' /> <br /> <asp:Label ID="LastNameLabel" runat="server" Text='<%# Eval("FirstName") & " " & Eval("LastName") %>' /> <br /> <asp:Label ID="NotesLabel" runat="server" Text='<%# Eval("Notes") %>' /> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:DataList> </div>