0

DropDownListネストしましたGridViewDropDownListデータソースをフィルタリングして、アクティブな db 行 (ビットタイプとしてアクティブな列) または現在選択されている の値のみを表示するにはどうすればよいDropDownListですか?

次のコードの一部が機能しない場所。現在の GridView 行データに (マークアップによって) バインドする方法はありますか?

<asp:GridView ID="GridView" runat="server" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PlasticTypeId" 
    DataSourceID="dsPlasticTypes">
    <Columns>
        <asp:CommandField ShowEditButton="True" />
        <asp:CheckBoxField DataField="Active" HeaderText="Active" SortExpression="Active" />
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:TemplateField HeaderText="<%$ Resources:Labels, PlasticFamily %>" SortExpression="PlasticFamily.Name">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("PlasticFamily.Name") %>'/>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="ddlFamilies" runat="server" DataSourceID="dsFamilies" DataValueField="PlasticFamilyId"
                    DataTextField="Name" SelectedValue='<%# Bind("PlasticFamilyId") %>'/>
                <asp:EntityDataSource ID="dsFamilies" runat="server" 
                    ConnectionString="name=PlasticsDbEntities" OrderBy="it.Name"
                    DefaultContainerName="PlasticsDbEntities" EnableFlattening="False" 
                    EntitySetName="PlasticFamilies"
                    Where="it.Active==true || it.PlasticFamilyId==@control">
                    <WhereParameters>
                        <asp:ControlParameter Name="control" ControlID="ddlFamilies" PropertyName="SelectedValue" Type="Int32" />
                    </WhereParameters>
                </asp:EntityDataSource>
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
4

1 に答える 1

1

同じフィールドにバインドされた DropDownList の上に隠しフィールドを配置し、それを ControlParameter として使用してデータ ソースをフィルタリングすることで、これを解決しました。

<asp:TemplateField HeaderText="<%$ Resources:Labels, PlasticFamily %>" SortExpression="PlasticFamily.Name">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("PlasticFamily.Name") %>' />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:HiddenField ID="hfPlasticFamilyId" runat="server" Value='<%# Eval("PlasticFamilyId") %>' />
        <asp:DropDownList ID="ddlFamilies" runat="server" DataSourceID="dsFamilies" 
            DataTextField="Name" DataValueField="PlasticFamilyId" SelectedValue='<%# Bind("PlasticFamilyId") %>' />
        <asp:EntityDataSource ID="dsFamilies" runat="server" 
            ConnectionString="name=PlasticsDbEntities" 
            DefaultContainerName="PlasticsDbEntities" EnableFlattening="False" 
            EntitySetName="PlasticFamilies" OrderBy="it.Name" 
            Where="it.Active==true || it.PlasticFamilyId==@control">
            <WhereParameters>
                <asp:ControlParameter ControlID="hfPlasticFamilyId" Name="control" 
                    PropertyName="Value" Type="Int32" />
            </WhereParameters>
        </asp:EntityDataSource>
    </EditItemTemplate>
</asp:TemplateField>
于 2013-06-06T13:37:45.153 に答える