如何使用EntityDataSource控件插入数据?

时间:2010-08-05 09:44:12

标签: c# asp.net

在我的页面上有一些用于输入的文本框。如何将这些文本框连接到EntityDataSource控件?

1 个答案:

答案 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>