1

ドロップダウンリストでグリッドビューをフィルタリングしようとしています。私のグリッドビューとドロップダウンリストは、Access データベースによって取り込まれています。私が欲しいのは、サプライヤがドロップダウンリストから選択されたときに、製品のグリッドビューをそのサプライヤ ID を持つものにフィルタリングすることです。

ドロップダウン リストとグリッドビューを設定できますが、サプライヤーを選択しても何も起こりません。

FilterExpression="SupplierID Like '{0}%'" を追加しようとしましたが、System.Int32 および System.String で「Like」操作を実行できませんというエラーが発生します。

これが私のコードです。

<form id="form" runat="server" style="margin:0 auto;">
<asp:DropDownList ID="DropDownList1" runat="server" 
    DataSourceID="AccessDataSource2" DataTextField="Supplier" DataValueField="ID" AutoPostBack="true" AppendDataBoundItems="true">
    <asp:ListItem Text="All" Value="%" />
</asp:DropDownList>
<asp:AccessDataSource ID="AccessDataSource2" runat="server" 
    DataFile="~/App_Data/Hovden Oil Pricing.accdb" 
    SelectCommand="SELECT [Supplier], [ID] FROM [Suppliers] ORDER BY [Supplier]">
</asp:AccessDataSource>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" BackColor="White"
    DataSourceID="AccessDataSource1">

    <Columns>
        <asp:BoundField DataField="SupplierID" HeaderText="SupplierID" 
            SortExpression="SupplierID" />
        <asp:BoundField DataField="Product Number" HeaderText="Product Number" 
            SortExpression="Product Number" />
        <asp:BoundField DataField="Product Name" HeaderText="Product Name" 
            SortExpression="Product Name" />
        <asp:BoundField DataField="Product Type" HeaderText="Product Type" 
            SortExpression="Product Type" />
        <asp:CheckBoxField DataField="Bulked" HeaderText="Bulked" 
            SortExpression="Bulked" />
        <asp:BoundField DataField="UOM" HeaderText="UOM" SortExpression="UOM" />
        <asp:BoundField DataField="Multiple" HeaderText="Multiple" 
            SortExpression="Multiple" />
        <asp:BoundField DataField="$/GAL" HeaderText="$/GAL" SortExpression="$/GAL" />
        <asp:BoundField DataField="$/UNIT" HeaderText="$/UNIT" ReadOnly="True" 
            SortExpression="$/UNIT" />
        <asp:BoundField DataField="TypeID" HeaderText="TypeID" 
            SortExpression="TypeID" />
    </Columns>

</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/Hovden Oil Pricing.accdb" SelectCommand="SELECT [Supplier Products].SupplierID, Products.[Product Number], Products.[Product Name], [Product Types].[Product Type], Products.Bulked, Products.UOM, Products.Multiple, [Bulk Prices].Volume AS [$/GAL], [$/GAL]*[Multiple] AS [$/UNIT], [Product Types].TypeID
    FROM [Product Types] INNER JOIN ((Products INNER JOIN [Supplier Products] ON Products.[Product Number] = [Supplier Products].[Product Number]) INNER JOIN [Bulk Prices] ON (Products.[Product Number] = [Bulk Prices].[Product Number]) AND (Products.[Product Number] = [Bulk Prices].[Product Number])) ON [Product Types].TypeID = Products.[Product Type]
    WHERE (Products.Bulked)=Yes
    ORDER BY Products.[Product Name];" FilterExpression="SupplierID Like '{0}%'">
    <FilterParameters>
        <asp:ControlParameter Name="SupplierID" ControlID="DropDownList1" PropertyName="SelectedValue" />
    </FilterParameters>
</asp:AccessDataSource>
</form>

何か不足していますか?ありがとう。

4

1 に答える 1

2

本当に簡単です。int(SupplierID) をワイルドカード文字列値と比較しようとしているため、上記のエラーが発生しています。

SupplierID を文字列に変換するだけで機能します。

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/Hovden Oil Pricing.accdb" SelectCommand="SELECT [Supplier Products].SupplierID, Products.[Product Number], Products.[Product Name], [Product Types].[Product Type], Products.Bulked, Products.UOM, Products.Multiple, [Bulk Prices].Volume AS [$/GAL], [$/GAL]*[Multiple] AS [$/UNIT], [Product Types].TypeID
    FROM [Product Types] INNER JOIN ((Products INNER JOIN [Supplier Products] ON Products.[Product Number] = [Supplier Products].[Product Number]) INNER JOIN [Bulk Prices] ON (Products.[Product Number] = [Bulk Prices].[Product Number]) AND (Products.[Product Number] = [Bulk Prices].[Product Number])) ON [Product Types].TypeID = Products.[Product Type]
    WHERE (Products.Bulked)=Yes
    ORDER BY Products.[Product Name];" FilterExpression="Convert(SupplierID , 'System.String') LIKE '{0}%'">
    <FilterParameters>
        <asp:ControlParameter Name="SupplierID" ControlID="DropDownList1" PropertyName="SelectedValue" />
    </FilterParameters>
于 2013-01-25T20:32:17.000 に答える