我正在尝试让下拉列表为我工作。用户可以在很多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>
答案 0 :(得分:0)
您使用Dropdownlist selectedValue作为参数填充另一个控件,这由您的代码决定。在这种情况下 您在controlParameter中缺少属性
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Property="SelectedValue" Name="Field3" Type="String" />
</SelectParameters>
如果你试图填充DropDownList1
,你就完全脱轨了。在这种情况下,您需要显示更多标记代码和详细信息。
更新:您无法从正在填充的DropDownList
控件中获取参数值。删除参数或使用其他控件来提供值