2013-09-10 4 views
0

У меня есть сайт aspx с DropDownList в нем. Я хочу иметь возможность выбирать между тремя переменными, а затем сохранить выбранное значение для обратной передачи. Страница сделана так, что она загружает 10 записей из базы данных и с этим DropDownList я хочу иметь возможность выбирать между 10, 20, 30 элементами.Как связать DropDownList после обратной передачи?

DropDownList

<asp:DropDownList ID="dd1" runat="server" AutoPostBack="True" EnableViewState="True"> 
    <asp:ListItem Value="10">10</asp:ListItem> 
    <asp:ListItem Value="20">20</asp:ListItem> 
    <asp:ListItem Value="30">30</asp:ListItem> 
</asp:DropDownList> 

Здесь я пытаюсь установить значение, отправляемый в базу данных для запроса, который приносит из 10, 20 или 30 первых записей.

public IEnumerable<XX> repOrder_GetData([ViewState]DateTime? UpdatedRows) 
{ 
    var ordrar = _facade.OrderGetForAttest(1, Convert.ToInt32(dd1.SelectedValue)); 

    return ordrar; 
} 

Как сохранить это значение во время обратной передачи, потому что страница будет перезагружать каждый раз, когда вы выбираете что-то в DropDownList, в результате чего только первое значение, когда-либо выбранным.

protected void Page_Init(object sender, EventArgs e) 
     { 
      try 
      { 
       _masterpage = this.Master as XX.resource.masterpage.Site; 

      } 
      catch (Exception) 
      { 
       throw; 
      } 
     } 


     protected void Page_Load(object sender, EventArgs e) 
    { 
     // Kolla behörighet första gången. 
     KollaBehorighet(); 

     _masterpage.ClearMessage(); 

     if (Page.IsPostBack) 
     { 

     } 
     else 
     { 
      Page.DataBind(); 
      // Första gången.. 
      PageInit(); 
      FillPage(null); 
      //FIXME: xxx.Focus();        
     } 

    } 
+0

, в котором метод, который вы вызываете repOrder_GetData? – Damith

ответ

2

Вы должны установить событие OnSelectedIndexChanged.

<asp:DropDownList ID="dd1" runat="server" AutoPostBack="True" onselectedindexchanged="ddlItemSelected" EnableViewState="True"> 
    <asp:ListItem Value="10">10</asp:ListItem> 
    <asp:ListItem Value="20">20</asp:ListItem> 
    <asp:ListItem Value="30">30</asp:ListItem> 
</asp:DropDownList> 


protected void ddlItemSelected(object sender, EventArgs e) 
{ 
//Add your selected value to viewstate or session or whatever. Then check this value when binding on postback. 
Viewstate["myValue"] = dd1.SelectedValue; 
} 
1

Вы можете попытаться сохранить его в состоянии сеанса, а затем загрузить его из сессии Некоторые, как это:

Session["Selected"] = dd1.SelectedIndex; 

И Load Event вы можете использовать:

dd1.SelectedIndex = Convert.ToInt32(Session["Selected"]); 
Смежные вопросы