![](/img/trans.png)
[英]Removing all values but the first from a drop down list using jQuery
[英]Passing first values in drop down list when clicking search button
我有一個ASP按鈕和四個下拉列表,這些列表是從數據庫動態填充的。 單擊按鈕時,應該將下拉列表中的選定值傳遞給SQL存儲過程。 而是傳遞每個下拉列表中的第一個值,而不是選定的值。 這是aspx頁面上的代碼:
<asp:DropDownList runat="server" ID="ddlCountry" AppendDataBoundItems="True">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlTypeStructure" AppendDataBoundItems="True">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlCategory" AppendDataBoundItems="True">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlSegment" AppendDataBoundItems="True">
</asp:DropDownList>
<asp:Button runat="server" ID="btnSearhProjects" Text="Go"
CausesValidation="False" onclick="btnSearhProjects_Click" UseSubmitBehavior="False" />
以下是該按鈕的C#代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindCountries();
BindCategories();
BindSegments();
BindStructures();
}
}
public void SearchProjects()
{
Project project = new Project();
string country = ddlCountry.SelectedItem.Text;
string category = ddlCategory.SelectedItem.Text;
string segment = ddlSegment.SelectedItem.Text;
string structure = ddlTypeStructure.SelectedItem.Text;
List<Project> projectList = project.GetProjects(country, category, segment, structure);
gvProjects.DataSource = projectList;
gvProjects.DataBind();
}
protected void btnSearhProjects_Click(object sender, EventArgs e)
{
SearchProjects();
}
這就是我填充每個下拉列表的方式:
public void BindCountries()
{
List<Country> countryList = new List<Country>();
Country country = new Country();
countryList = country.GetCountries();
ddlCountry.DataTextField = "CountryName";
ddlCountry.DataValueField = "CountryID";
ddlCountry.DataSource = countryList;
ddlCountry.DataBind();
}
我嘗試使用ddlCountry.SelectedValue.Text
和ddlCountry.SelectedItem.Value
,它們不起作用。 任何幫助將不勝感激。 謝謝。
在Page_Load
事件的if (!IsPostBack)
代碼塊中設置一個斷點(或某些調試語句),以確保單擊按鈕后未執行該斷點。
還要確保DropDownList ListItems的value
屬性都是唯一的,否則它將設置為第一個重復的值。
問題是頁面加載尚未運行-因為這些是動態創建的,因此不會在回發時設置。
您也可以將這些值存儲在viewstate中,但是似乎您已關閉頁面的viewstate。 (在動態頁面上,Viewstate 可能是一個問題,但是您需要解決這個問題。)
有幾種方法可以執行此操作,但我會為您提供一個簡單的答案,請嘗試執行此操作並報告該操作是否成功。Autopostback設置為false可能會導致此問題,禁用viewstate也會導致此問題
將值存儲在ViewState或Session變量中,或者根據需要創建受保護的屬性
假設您正在綁定數據,
有DataBound事件,該事件在數據綁定到下拉列表之后觸發。 當您將dataSource分配給dropwdwon時,在將所有行綁定到dropdown之后需要選擇項目
var selectedValue string.Empty;
protected void DropDownList1_DataBound(object sender, EventArgs e)
{
selectedValue = ddlCountry.SelectedValue; // store it in some variable
}
您還可以獲取DropDownList的ListItem並使用foreach來查看選擇了哪些Item ..請確保在Page_Load的if(IsPostBack)中執行此操作,請記住,單擊按鈕會觸發PostBack
foreach (ListItem item in ddlCountry.Items)
{
if (item.Selected)
{
// TODO: Whatever you are doing with a selected item.
}
}
您可以刪除AppendDataBoundItems =“ true”。
DropDownList AppendDataBoundItems(第一個項目為空白,沒有重復項)
<asp:DropDownList runat="server" ID="ddlCountry">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlTypeStructure">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlCategory">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlSegment">
</asp:DropDownList>
<asp:Button runat="server" ID="btnSearhProjects" Text="Go"
CausesValidation="False" onclick="btnSearhProjects_Click" UseSubmitBehavior="False" />
我找到了解決我問題的方法。 我的母版頁上有一個額外的form標記,其中帶有method="post"
。 這導致頁面發回自身。 刪除表單標簽后,便可以正確使用下拉列表了。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.