0

我有一个快速的问题(希望很快)。我还在学习中,请多多包涵。

我正在尝试使 DDL 正常工作,其中我的下拉菜单向用户显示一列选项,但实际上,他们选择的选项将使用另一列中该特定选项的 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 的机器类型

例如,Hardware 表如下所示:

>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,然后将该值报告回我的主数据源(即:UPDATE MainAsset SET [site] = @Site,[os] = @os,[device] = @Computer WHERE [pk] = @pk") 其中 [device] 是我的硬件表。

我已经尝试了所有我能想到的方法,并以多种方式操纵了我的 RetrieveComputerSQL DS。我决定以“组合”选项结束,但我尝试过的任何方法似乎都不起作用。

任何建设性的想法或意见肯定会受到赞赏。希望这一切都有意义。

谢谢!

4

1 回答 1

0

除非我非常想念一些东西:

将您的设置DataValueField为“DeviceID”并将您的设置DataTextField为“计算机”。这应该如你所愿显示。

如果您希望在 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 回答