代码背后没有从下拉列表中获取当前文本

时间:2014-01-15 16:15:23

标签: c# asp.net

我的按钮和下拉列表有问题,当我点击按钮并在后面的代码中调用一个方法时,后面的代码没有采用下拉列表的当前文本,而是刷新网站后的文本。 aspx代码是:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager" EnablePageMethods="true" runat="server" />
<div>
    <table runat="server" id="showDBTable">
        <tr>
            <td>
                <asp:Button ID="showDB" runat="server" OnClick="showDBContent" Text="Show database content" />
            </td>
            <td>
                <asp:DropDownList runat="server" ID="showDBDropDown" OnLoad="FindExistingMetaTag" />
            </td>
        </tr>
    </table>
</div>
</form>

和背后的代码:

protected void showDBContent(object sender, EventArgs e)
{
    String queryString = "";
    if (showDBDropDown.Text == "Show all")
    {
        queryString = "SELECT * from dbo.Search";
    }
    else
    {
        queryString = "SELECT * from dbo.Search where Tag = '" + (showDBDropDown.Text).TrimStart().TrimEnd() + "'";
    }

我该如何解决这个问题?

编辑 - 根据要求:

    protected void FindExistingMetaTag(object sender, EventArgs e)
{
    String queryString = "SELECT TAG from dbo.Tags";
    List<String> tagsShow = new List<String>();
    tagsShow.Add("Show all");
    using (SqlConnection conn = new SqlConnection(info.connectionString))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = queryString;
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                tagsShow.Add(reader.GetString(0));
            }
        }
    }

    showDBDropDown.DataSource = tagsShow;
    showDBDropDown.DataBind();
    showDBDropDown.SelectedIndex = 0;
}

我刚注意到它可能是“showDBDropDown.SelectedIndex = 0;”,但它似乎没有改变任何东西来删除它。

2 个答案:

答案 0 :(得分:3)

我认为您需要从OnLoad中删除showDBDropDown属性:

<asp:DropDownList runat="server" ID="showDBDropDown" />

并在第一次加载时在showDBDropDown方法中填充Page_Load的内容,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindDropdowns();
    }
}

private void BindDropdowns()
{
    String queryString = "SELECT TAG from dbo.Tags";
    List<String> tagsShow = new List<String>();
    tagsShow.Add("Show all");
    using (SqlConnection conn = new SqlConnection(info.connectionString))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = queryString;
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                tagsShow.Add(reader.GetString(0));
            }
        }
    }

    showDBDropDown.DataSource = tagsShow;
    showDBDropDown.DataBind();
}

答案 1 :(得分:0)

根据您的需要,使用yourDropdown.SelectedItem.TextyourDropdown.SelectedItem.Value更新您的代码。

if (showDBDropDown.SelectedItem.Text== "Show all")
{
    queryString = "SELECT * from dbo.Search";
}
else
{
    queryString = "SELECT * from dbo.Search where Tag = '" +    
                        (showDBDropDown.SelectedItem.Text) + "'";
}

查看here了解DropdownList

的更多信息