0

簡単な質問があります(できれば簡単に)。まだまだ勉強中ですので、ご容赦ください。

DDL を機能させようとしています。ドロップダウンにはユーザーに 1 つのオプションの列が表示されますが、実際には、ユーザーが選択したオプションは、他の列の特定のオプションの DeviceID を使用します。これが私のデータ ソースの内容です。

    <asp:SqlDataSource ID="RetrieveComputerSQL" runat="server" 
        ConnectionString="<%$ ConnectionStrings:SynInventory %>" 
        SelectCommand="SELECT DeviceID + ' ' + Computer as Combo,Computer as Computer,DeviceID AS DeviceID from Hardware">

ハードウェア テーブルには 2 つの列があります。

DeviceID = テーブル内の項目の ID Computer = その DeviceID に接続されているマシンのタイプ

たとえば、ハードウェア テーブルは次のようになります。

>Computer (Column)        DeviceID (Column)
>------------------       ----------------------   
> Thin Client                      0
> Desktop                          1
> Laptop                           2

さて、ここに私のDDLがあります:

                    <asp:DropDownList ID="ddlComputer" runat="server" AutoPostBack="true"
                    DataSourceID="RetrieveComputerSQL" DataTextField="Combo" DataValueField="Computer"                      
                    SelectedValue='<%# Bind("Computer") %>' AppendDataBoundItems="true">

私がやりたいことは、オブジェクトの「わかりやすい」名前を表示することですが、実際には、ドロップダウン ボックスで選択したオブジェクトの DeviceID を取得し、その値をメインの DataSource に報告します (つまり、UPDATE MainAsset SET です)。 [site] = @Site,[os] = @os,[device] = @Computer WHERE [pk] = @pk") ここで、[device] はハードウェア テーブルです。

考えられるあらゆる方法でこれを試し、RetrieveComputerSQL DS をさまざまな方法で操作しました。「コンボ」オプションで終了することにしましたが、試したことはありません。

建設的なアイデアやコメントをいただければ幸いです。これがすべて理にかなっていることを願っています。

ありがとう!

4

1 に答える 1

0

私が何かを非常に見逃していない限り:

あなたDataValueFieldを「DeviceID」に設定し、あなたDataTextFieldを「Computer」に設定します。それはあなたが望むように表示されるはずです。

DDLの上部にダミーエントリが必要な場合(グリッドソースの値に対してその列にnullがある場合に役立ちます)、次のようにします。

<asp:DropDownList ID="ddlComputer" runat="server" AutoPostBack="true"
                DataSourceID="RetrieveComputerSQL" DataTextField="Combo" DataValueField="Computer"                      
                SelectedValue='<%# Bind("Computer") %>' AppendDataBoundItems="true">
   <asp:ListItem Text="-- Select --" Value=""/>
</asp:DropDownList>
于 2012-11-07T19:22:02.877 に答える