在我的页面上有一些用于输入的文本框。如何将这些文本框连接到EntityDataSource控件?
答案 0 :(得分:3)
我建议使用带有相应DetailsView控件的GridView控件,而不是在EntityDataSource控件中使用纯文本框。 EntityDataSource控件旨在与这两个控件很好地协作。 DetailsView控件将是实际负责插入和更新数据的控件。
当您配置EntityDataSource控件时(您需要两个,一个用于GridView,一个用于DetailsView),请务必选中“启用自动插入”,#39; '启用自动更新,'和'启用自动删除' “配置数据选择”框中的复选框设置向导的屏幕。在您的情况下,由于您只对插入数据感兴趣,因此您只需检查“启用自动插入”即可。复选框。
您也可以单独使用DetailsView,并保留GridView。为此,您需要配置DetailsView的EntityDataSoruce'表达式编辑器'对于' Where'子句有点不同(在EntityDataSource控件的属性列表中找到)。
重要的是要指出GridView和DetailsView是非常重的控件。除非您正在构建一个小型站点(用户很少)或原型化计划的站点项目,否则我建议您修改您的开发策略,并可能改为使用原始ADO.Net。
这是一个简单的例子:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=SomeDatabaseEntities"
DefaultContainerName="SomeDatabaseEntities"
EnableFlattening="False"
EntitySetName="Links" EnableDelete="True" EnableInsert="True"
EnableUpdate="True">
</asp:EntityDataSource>
<asp:GridView ID="GridView1" runat="server" CellPadding="4"
ForeColor="#333333"
GridLines="None" AllowPaging="True" AllowSorting="True"
EnableViewState="false"
DataSourceID="EntityDataSource1"
AutoGenerateColumns="False" PageSize="20"
DataKeyNames="LinkId">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowSelectButton="True" />
<asp:BoundField DataField="LinkId" HeaderText="LinkId"
SortExpression="LinkId" ReadOnly="True" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="URL" HeaderText="URL"
SortExpression="URL" />
<asp:BoundField DataField="ImagePath" HeaderText="ImagePath"
SortExpression="ImagePath" />
</Columns>
</asp:GridView>
<br />
<asp:EntityDataSource ID="EntityDataSource2" runat="server"
ConnectionString="name=SomeDatabaseEntities"
DefaultContainerName="SomeDatabaseEntities"
EnableFlattening="False"
EntitySetName="Links" Where="it.LinkId == @LinkId"
EnableInsert="True"
EnableUpdate="True">
<WhereParameters>
<asp:ControlParameter ControlID="GridView1"
DbType="Int32" Name="LinkId"
PropertyName="SelectedValue" />
</WhereParameters>
</asp:EntityDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px"
Width="125px"
CellPadding="4" ForeColor="#333333"
GridLines="None" DataKeyNames="LinkId"
AutoGenerateRows="False"
DataSourceID="EntityDataSource2">
<Fields>
<asp:BoundField DataField="LinkId"
HeaderText="LinkId"
ReadOnly="true" InsertVisible="false"
SortExpression="LinkId" />
<asp:BoundField DataField="Title"
HeaderText="Title"
SortExpression="Title" />
<asp:BoundField DataField="URL" HeaderText="URL"
SortExpression="URL" />
<asp:BoundField DataField="ImagePath"
HeaderText="ImagePath"
SortExpression="ImagePath" />
<asp:CommandField ShowEditButton="True"
ShowInsertButton="True" />
</Fields>
</asp:DetailsView>