【发布时间】:2014-01-15 16:15:23
【问题描述】:
我的按钮和下拉列表有问题,当我单击按钮并在后面的代码中调用了一个方法时,后面的代码不是取下拉列表的当前文本,而是站点刷新后的文本.这个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;”,但它似乎没有改变任何东西来删除它。
【问题讨论】:
-
你能添加你的 FindExistingMetaTag 逻辑吗?
-
@MatiasP 向我们展示你的代码,你在哪里填充你的
dropdownlist -
我的假设是,当页面进行回发时,下拉列表被清除并重新填充,导致您丢失先前选择的项目。您可能需要添加一些代码检查以确保列表不会在回发时重新实例化。
-
这听起来很合乎逻辑,但我该怎么做呢? FindExistingMetaTag 添加
-
我希望有人会创建名称为 '; 的标签删除表标签;--