2015-03-20 3 views
0

ok, когда я хочу получить SelectedValue выпадающего списка, когда я нажимаю кнопку, но SelectedValue всегда возвращает «» (ничего), , пожалуйста, помогите мне спасибо !Не удается получить SelectedValue из раскрывающегося списка ASP.NET

здесь является источником

<tr> 
    <th style="float:left"> 
    <asp:DropDownList ID="ddlcategory" runat="server" ></asp:DropDownList> 
    <asp:TextBox ID="txtsearch" runat="server"></asp:TextBox> 
    <asp:ImageButton ID="btnsearch" runat="server" Height="20px" ImageUrl="~/img/search.png" OnClick="btnsearch_Click" Width="20px" /> 
    <asp:LinkButton ID="lbtnsearch" runat="server" PostBackUrl="~/Search.aspx">Advanced Search</asp:LinkButton> 
    </th> 
    </tr> 

и вот код позади

public partial class _default : System.Web.UI.Page 
{ 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
    SqlDataAdapter adapter = new SqlDataAdapter(); 

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

    private void BindDataList() 
    { 
     string cmd = "SELECT top 3 product_id, product_name, brand, imgurl FROM product ORDER BY NEWID()"; 
     adapter.SelectCommand = new SqlCommand(cmd, con); 
     DataTable dt = new DataTable(); 
     adapter.Fill(dt); 
     DataList1.DataSource = dt; 
     DataList1.DataBind(); 
    } 

    private void BindDropDown() 
    { 
     string cmd = "select category_id, category_name from category"; 
     adapter.SelectCommand = new SqlCommand(cmd, con); 
     DataTable dt = new DataTable(); 
     adapter.Fill(dt); 
     ddlcategory.DataTextField = "category_name"; 
     ddlcategory.DataValueField = "category_id"; 
     ddlcategory.DataSource = dt; 
     ddlcategory.DataBind(); 
    } 

    protected void btnsearch_Click(object sender, ImageClickEventArgs e) 
    { 
     Response.Redirect("~/Product/Product.aspx?category_id=" + ddlcategory.SelectedValue.ToString() + "&search=" + txtsearch.Text); 
    } 
} 

и это результат, когда я нажимаю btnsearch «http://localhost:1345/Product/Product.aspx?category_id=&search=something» , как вы можете видеть, что этот ddlcategory. SelectedValue.ToString() return "", что случилось?

+0

Просто голова - адрес, который вы указали, предназначен для вашего локального хоста, поэтому никто, кроме вас, не сможет его достать. – lintmouse

+0

Когда вы просматриваете источник для раскрывающегося списка в своем браузере, что вы видите? Имеет ли он как текст, так и ценности? – lintmouse

+0

Я знаю, я просто хочу уточнить, что ddlcategory.SelectedValue.ToString() ничего не возвращает. и я уверен, что есть некоторые данные о источнике данных. –

ответ

1

Черт, я провел часы и, наконец, решил эту проблему. Проблема заключается в том, что на главной странице EnableViewState установлено значение false (родительский элемент управления). и все, что вам нужно, вернет true. даже если DropDownList (дочерний элемент управления) включен viewstate, его также необходимо определить в родительском элементе управления. то есть EnableViewState в родительском элементе управления установлено в значение false, дочерний элемент управления также будет ложным.

Смежные вопросы