如何从数据库表填充asp.net中的下拉列表

时间:2013-02-07 16:47:07

标签: asp.net sql database drop-down-menu

我是asp.net的新手,我想用我创建的表中的值填充下拉列表。我只想用一个字段填充列表 - 我表中的语言。我认为我已正确连接到数据源,但我不知道如何将值放入列表中。我可以输入我自己的值,但我宁愿让它自动化。

这是我到目前为止所做的,但我猜它还有更多,而不仅仅是将列表链接到数据源。任何帮助将不胜感激。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HBshareIndexConnectionString %>" 

SelectCommand="SELECT * FROM [Web_Metrics] WHERE ([LCID] = @LCID)">
<SelectParameters>
    <asp:QueryStringParameter Name="LCID" QueryStringField="LCID" Type="Int32" />
</SelectParameters>

</asp:SqlDataSource>

<asp:Label ID="Label1" runat="server" Text="Select LCID: " ></asp:Label> &nbsp; &nbsp;  
<asp:DropDownList ID="DropDownList1" Width="150px" runat="server" DataSourceID="SqlDataSource1"  DataTextField="LCID" DataValueField="LCID">
<asp:ListItem>Select LCID...</asp:ListItem>
</asp:DropDownList>
嗨,大家好,感谢您的帮助。我现在已经填充了下拉列表,但我想知道如何实际获得转发器,我用它来显示该人选择的LCID的详细信息?我见过有人在谈论page.isPostback,但我不知道那是什么,或者它是否适用于我当前的设置。我需要以某种方式获取他们选择的LCID,然后刷新页面以显示该LCID的详细信息。有没有人有任何想法?感谢

2 个答案:

答案 0 :(得分:1)

您的问题是您正在尝试定义列表项和数据源。

如果您要插入“选择项目..”选项,我建议您将其添加到结果集中(使其始终位于UNION的第一位,而ORDER BY可能很难取决于在您的字段上)或在代码后面的数据绑定后插入:

DropDownList1属性的修改:

<asp:DropDownList ID="DropDownList1" Width="150px" runat="server" DataSourceID="SqlDataSource1"  DataTextField="CountryName" DataValueField="LCID" OnDataBound="InsertChooseItem" />

C#:

protected void InsertChooseItem(object sender, EventArgs e)
{
    ListItem selectOnePlease = new ListItem("Select LCID..", 0);

    DropDownList1.Items.Insert(0, selectOnePlease);
}

VB:

Protected Sub InsertChooseItem(sender As Object, e As EventArgs)

    Dim selectOnePlease As New ListItem("Select LCID..", 0)

    DropDownList1.Items.Insert(0, selectOnePlease)

End Sub

答案 1 :(得分:0)

您已将select参数指定为查询字符串,因此仅当URL类似于以下内容时,才会填充DropDownList中的数据:

http://{Your server name}/Default.aspx?LCID=1

这没有任何意义,因为表中的LCID列应该是唯一的,所以虽然工作,但下拉列表中只有一个值。

我认为你想要的是在下拉列表中显示数据库中的所有语言,这是一个例子:

<asp:SqlDataSource ID="sqlDS" runat="server" 
ConnectionString="<%$ ConnectionStrings:HBshareIndexConnectionString %>"
    SelectCommand="SELECT LCID,Language FROM [Web_Metrics]">
</asp:SqlDataSource>
<asp:DropDownList ID="ddlLanguages" AppendDataBoundItems="true" Width="150px" runat="server" DataSourceID="sqlDS" DataTextField="Language" DataValueField="LCID">
    <asp:ListItem>Select Language</asp:ListItem>
</asp:DropDownList>

只是注意,你永远不应该向客户端显示ID,这对他们来说完全没有意义,这些ID主要由开发人员在后台使用,这就是我在下拉菜单中设置的原因:

  1. DataTextField =“语言”(这是用户可见的语言名称)
  2. DataValueField =“LCID”(用户不可见,但对后面代码中的任何其他处理非常有用)

    AppendDataBoundItems =“true” - 这行代码将保留您手动添加到下拉列表中的所有项目,例如“选择语言”,并附加任何数据绑定项,例如从SQL表中

    < / LI>