3

我想用我创建的表中的值填充一个下拉列表。我只想用其中一个字段填充列表 - 我表中的语言。我认为我已正确连接到数据源,但我不知道我必须做什么才能将值放入列表中。我可以输入自己的值,但我宁愿让它自动化。

这是我到目前为止所拥有的,但我猜它不仅仅是将列表链接到数据源。

<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 的详细信息。有没有人有任何想法?

4

2 回答 2

1

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

如果你想插入一个“选择一个项目..”选项,我建议将它添加到你的结果集(让它总是在你的结果集中UNION,并且ORDER BY可能很困难,具体取决于你的字段)或者在数据绑定之后插入它后面的代码:

修改DropDownList1s属性:

<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
于 2013-02-07T17:36:37.243 回答
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="Language"(这是用户可见的语言名称)
  2. DataValueField="LCID"(对用户不可见,但对后面代码中的任何附加处理很有用)

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

于 2013-02-07T20:41:52.570 回答