总结Visual Studio下ASP.NET模板化控件中的数据绑定
在模板化控件中绑定到数据
FormView、DataList、Repeater和ListViewWeb服务器控件使用模板显示数据和检索用户输入,以插入、更新或删除数据。此外,您还可以将模板与GridView和DetailsView控件一同使用,以自定义数据布局。
通过将模板化控件的DataSourceID属性设置为数据源控件的ID,可以将模板化控件绑定到数据源控件(例如LinqDataSource、ObjectDataSource或SqlDataSource控件)。然后可以在模板中使用Eval和Bind函数绑定到数据源中的数据。有关更多信息,请参见数据绑定表达式语法。
使用模板将控件绑定到数据
1.向页添加数据源控件(如SqlDataSource控件),如下面的示例所示:
<asp:SqlDataSourceID="SqlDataSource1" SelectCommand="SELECT*FROM[Products]" ConnectionString="<%$ConnectionStrings:NorthwindConnection%>" RunAt="server"> </asp:SqlDataSource>
2.添加一个支持模板的控件,如ASP.NETFormView控件。
3.将模板化控件的DataSourceID属性设置为步骤1中数据源控件的ID,如此示例中所示:
<asp:FormViewID="FormView1" DataSourceID="SqlDataSource1" DataKeyNames="ProductID" Runat="server"> </asp:FormView>
4.向模板化控件添加模板并使用控件和标记填充这些模板。
5.若要显示数据,请将Eval函数作为属性设置使用,并引用绑定数据字段。在用于插入或编辑数据的模板中,使用Bind函数引用数据绑定字段,如以下示例所示:
<asp:FormViewID="FormView1" DataSourceID="SqlDataSource1" DataKeyNames="ProductID" RunAt="server"> <ItemTemplate> <table> <tr><tdalign="right"><b>ProductID:</b></td><td><%#Eval("ProductID")%></td></tr> <tr><tdalign="right"><b>ProductName:</b></td><td><%#Eval("ProductName")%></td></tr> <tr><tdalign="right"><b>CategoryID:</b></td><td><%#Eval("CategoryID")%></td></tr> <tr><tdalign="right"><b>QuantityPerUnit:</b></td><td><%#Eval("QuantityPerUnit")%></td></tr> <tr><tdalign="right"><b>UnitPrice:</b></td><td><%#Eval("UnitPrice")%></td></tr> </table> </ItemTemplate> </asp:FormView>
每个Web服务器控件支持不同的模板。例如,Repeater控件支持一个ItemTemplate和一个AlternatingItemTemplate,以使用交替控件、样式和标记来显示数据。
绑定到VisualStudio的模板化控件中的数据
可以将一个控件(例如GridView、DetailsView、FormView、ListView、DataList或Repeater控件)与一个数据源控件(例如LinqDataSource、ObjectDataSource或SqlDataSource控件)关联起来。此外还可以使用控件的模板(ListView、DataList、Repeater和FormView控件需要模板)在设计器中通过自定义用户界面(UI)来自定义数据表示形式。
此主题演示如何将用户界面控件(如TextBox控件)添加到模板中并将该控件绑定到特定数据。
将模板控件绑定到数据源
1.在页上建立有效的数据源(如SqlDataSource控件),并注意ID属性值。
例如:
<asp:SqlDataSourceID="SqlDataSource1"Runat="server" SelectCommand="SELECTCustomerID,CompanyNameFROMCustomers" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString%>"> </asp:SqlDataSource>有关如何将SqlDataSource控件用于数据库的更多信息,请参见SqlDataSourceWeb服务器控件概述。
2.从工具箱的“数据”组中,将DataList控件拖动到页面上。
出现“DataList任务”快捷菜单。
如果“DataList任务”快捷菜单没有出现,右击DataList控件,再单击“显示智能标记”。
3.在“选择数据源”列表中,单击在步骤1中创建的SqlDataSource控件。
当呈现该页时,该控件会显示来自未自定义的查询的所有列和数据。根据数据的不同,显示的DataList控件将带有默认绑定字段,如下面的代码示例所示:
<asp:DataListID="DataList1"runat="server" DataKeyField="CustomerID" DataSourceID="SqlDataSource1"> <ItemTemplate> CustomerID: <asp:LabelID="CustomerIDLabel"runat="server" Text='<%#Eval("CustomerID")%>'> </asp:Label><br/> CompanyName: <asp:LabelID="CompanyNameLabel"runat="server" Text='<%#Eval("CompanyName")%>'> </asp:Label><br/> <br/> </ItemTemplate> </asp:DataList>编辑控件的模板
1.在“设计”视图中右击DataList控件,再单击“显示智能标记”。
2.在“DataList任务”菜单上单击“编辑模板”。
现在可以在设计器中编辑模板。可以将其他控件拖动到模板上以便以后进行绑定。
3.在“显示”列表中单击“AlternatingItemTemplate”(不同的控件支持不同的模板)。
4.在AlternatingItemTemplate设计空间中键入CustomerID:,然后从“工具箱”的“标准”组中将一个T:System.Web.UI.WebControls.Label控件拖动到DataList控件上。
5.在“Label任务”菜单上单击“编辑数据绑定”。
6.在“标签名数据绑定”对话框中的“可绑定属性”下,单击“Text”。
7.在“绑定到”列表中的“文本的绑定”下单击“CustomerID”。
8.为CompanyName重复第4步到第7步。
9.在“AlternatingItemTemplate”设计空间中,选择所有内容,然后按Ctrl+B将文本更改为粗体。
10.右击DataList控件,然后单击“显示智能标记”。
11.单击“结束模板编辑”退出模板编辑模式。
当该页在浏览器中显示时,公司列表会交替显示为纯文本和粗体文本。