DevExpress gridView数据源

时间:2014-01-28 13:17:28

标签: c# asp.net entity-framework gridview devexpress

我正在使用实体框架处理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>

感谢您的帮助。

1 个答案:

答案 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中的任何一个:

  • ControlParameter
  • FormParameter
  • SessionParameter
  • RouteParameter
  • CookieParameter
  • QueryStringParameter
  • ProfileParameter

所以你的最终代码看起来像这样:

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