我有一個問題,我的按鈕和下拉列表,當我點擊按鈕,並在後面的代碼中調用一個方法,背後的代碼是不採取當前文本的下拉,但網站刷新後的文字。這樣做的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向我們展示您的代碼,您正在填充您的'下拉列表' –
我的假設是,當頁面進行回發時,下拉列表將被清除並重新填充,導致您丟失先前選擇的項目。您可能需要添加一些代碼檢查以確保列表不會在回發中重新實例化。 – MadHenchbot