我正在使用实体框架处理asp web表单项目。我有两个实体(用户和角色),我想实现以下行为: gridView必须显示一个用户的角色。 到目前为止我所做的是显示所有角色。
<dx:ASPxGridView ID="grid" runat="server" Width="100%" AutoGenerateColumns="False" ClientInstanceName="grid"
KeyFieldName="Id" OnDataBinding="grid_DataBinding" DataSourceID="RoleDataSource" EnableTheming="True" Theme="BlackGlass">
<ClientSideEvents RowDblClick="function(s, e) {
s.StartEditRow(e.visibleIndex);}" />
<Columns>
<dx:GridViewDataTextColumn Caption="ID" FieldName="Id" VisibleIndex="0">
<EditFormSettings Visible="false"/>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn Caption="Role Name" FieldName="name" VisibleIndex="1" >
</dx:GridViewDataTextColumn>
</Columns>
<SettingsBehavior AllowFocusedRow="true" AllowSelectByRowClick="True" AllowSelectSingleRowOnly="True" ConfirmDelete="True" />
<SettingsEditing Mode="PopupEditForm"/>
<SettingsText CommandUpdate="Ajouter/Modifier" PopupEditFormCaption="Ajouter/Modifier" />
<SettingsPopup>
<EditForm AllowResize="True" HorizontalAlign="Center" />
</SettingsPopup>
</dx:ASPxGridView>
<asp:EntityDataSource ID="RoleDataSource" runat="server" ConnectionString="name=AccountModelContainer"
DefaultContainerName="AccountModelContainer" EntitySetName="RoleSet" EnableDelete="True" EnableInsert="True" EnableUpdate="True">
</asp:EntityDataSource>
感谢您的帮助。
答案 0 :(得分:2)
您应该使用EntityDataSource的the Where
property。
您可以在EntityDataSource声明中添加这样的属性:
Where="name = @name"
(或者你可以过滤“ID”,无论哪种方式适用于您的应用程序)
然后在EntityDataSource中的标记中添加WhereParameters
部分:
<WhereParameters>
<asp:ControlParameter ControlID="userNameTB" DbType="String"
DefaultValue="testUser" Name="name" PropertyName="Text" />
</WhereParameters>
请注意,此示例假定您有一个TextBox名称“userNameTB”,其中包含您要过滤的用户名。但是,您可以使用the <asp:Parameter>
controls中的任何一个:
所以你的最终代码看起来像这样:
<asp:EntityDataSource ID="RoleDataSource" runat="server" ConnectionString=""
name=AccountModelContainer" DefaultContainerName="AccountModelContainer"
EntitySetName="RoleSet" EnableDelete="True" EnableInsert="True"
EnableUpdate="True" Where="name = @name">
<WhereParameters>
<asp:ControlParameter ControlID="userNameTB" DbType="String"
DefaultValue="testUser" Name="name" PropertyName="Text" />
</WhereParameters>