使用@parameter时,下拉列表显示为空

时间:2012-03-12 03:17:17

标签: asp.net drop-down-menu

我正在尝试让下拉列表为我工作。用户可以在很多Field1中,所以我希望下拉菜单显示那些Field1。 目前发生的事情是我得到一个空白列表。以下是代码示例:

 <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
                    SelectCommand="SELECT DISTINCT Field1 FROM table 
                                    WHERE (Field3= @Field3)">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="DropDownList1" Name="Field3" Type="String" />
                    </SelectParameters>
                </asp:SqlDataSource>

如果我删除了select参数和WHERE子句,则会显示所有DHB的列表 - 它似乎与@ Field3有问题。

编辑:我已在SQL Server中测试了查询,它对我有用(通过用已知值替换@ Field3)

有什么建议吗?我是asp.net的新手,在.cs文件中几乎没有任何东西(除了一些授权等),所以如果人们可以指出我的方向非常棒。

编辑2:如果我给你整个模板,那可能会有所帮助:

 <asp:TemplateField HeaderText="Field1" SortExpression="Field2">
            <EditItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("Field2") %>'></asp:Label>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server" 
                    DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="Field1">
                </asp:DropDownList>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
                    SelectCommand="Field1 FROM table 
                                    WHERE (Field3 = @Field3)">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="DropDownList1" Name="Field3" Type="String" />
                    </SelectParameters>
                </asp:SqlDataSource>
            </ItemTemplate>
        </asp:TemplateField>

1 个答案:

答案 0 :(得分:0)

您使用Dropdownlist selectedValue作为参数填充另一个控件,这由您的代码决定。在这种情况下 您在controlParameter中缺少属性

<SelectParameters>
     <asp:ControlParameter ControlID="DropDownList1" Property="SelectedValue" Name="Field3" Type="String" />
</SelectParameters>

如果你试图填充DropDownList1,你就完全脱轨了。在这种情况下,您需要显示更多标记代码和详细信息。

更新:您无法从正在填充的DropDownList控件中获取参数值。删除参数或使用其他控件来提供值