我的按钮和下拉列表有问题,当我点击按钮并在后面的代码中调用一个方法时,后面的代码没有采用下拉列表的当前文本,而是刷新网站后的文本。 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;”,但它似乎没有改变任何东西来删除它。
答案 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.Text
或yourDropdown.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