如何根据数据库中的数字字段填充动态下拉列表?

时间:2017-11-29 13:46:28

标签: c# mysql sql asp.net

我正在尝试实施一个数据库中数字为1 - 值的下拉列表。

我可以在下拉列表中显示数据库中的值,但不能将从1开始的数字作为下拉列表中的选项创建。

下面是我的asp代码:

    <asp:SqlDataSource
    ID="selectSprintLength"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:scConnection %>"
    SelectCommand="SELECT * FROM sc_sprints WHERE scSprintID = @sprint">
    <SelectParameters>
        <asp:QueryStringParameter QueryStringField="sprint" Name="sprint" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

<asp:DropDownList ID="sprintLengthDropDown"
    runat="server"
    OnSelectedIndexChanged="sprintDropDown_SelectedIndexChanged"
    DataSourceID="selectSprintLength"
    DataTextField="scSprintTotal"
    DataValueField="scSprintTotal"
    AutoPostBack="true"
    EnableViewState="true" />

这是我的c#代码:

protected void sprintDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    int counter = 0;
    int x = Int32.Parse(sprintLengthDropDown.SelectedValue);
    do
    {
         counter++;
    }
    while (counter < x);
}

任何人都可以请帮助,以便值1 - scSprintTotal是下拉列表中的所有选项。例如scSprintTotal为7,下拉值为1,2,3,4,5,6,7。

提前致谢!

2 个答案:

答案 0 :(得分:1)

要使用系列值填充下拉列表,我们可以使用Enumerable.Range(starting_number,range);请参阅教程https://www.dotnetperls.com/enumerable-range

sprintLengthDropDown.DataSource = Enumerable.Range(1, 7);
sprintLengthDropDown.DataBind();

您可以将范围动态化为数据库中的值。

答案 1 :(得分:0)

 int items;
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("SELECT * from scSprint",con);
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Label1.Text = "The total is " + dr["scsprinttotal"].ToString(); 
            items = Convert.ToInt32(dr["scsprinttotal"].ToString());
        }
        con.Close();
        for (int i = 1; i <= items;i++ )
        {
            DropDownList1.Items.Add(i.ToString());
        }

    }