2013-02-24 12 views
1

У меня есть DropDownList с помощью кнопки:Как передать DROPDOWNLIST значение на другую страницу

<form id="form1" runat="server"> 
     <asp:DropDownList ID="DropDay" runat="server"/> 
     <input type="submit" value="Save" runat="server" id="btn"/> 
</form> 

C# код для страницы:

protected void Page_Load(object sender, EventArgs e) 
{ 
    btn.ServerClick+=new EventHandler(btn_ServerClick); 
} 

void btn_ServerClick(object sender, EventArgs e) 
{ 
    HttpContext value= HttpContext.Current; 
    value.Items.Add("Day", DropDay.SelectedValue); 
    Server.Transfer("ASP_2.aspx"); 
} 

В ASP_2 У меня есть ярлык, что мне нужно установить выбранное значение Dropdownlist. А вот код ASP_2.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    HttpContext value= HttpContext.Current; 
    lblDay.Text = value.Items["Day"].ToString(); 
} 

Проблема заключается в том, что значение всегда является первым элементом из выпадающего списка. Как установить выбранное значение?

EDIT

так, как я наполнение выпадающего списка Код идет в Page_Load:

DropDay.Items.Clear(); 
    for (int i = 1; i <= 10; i++) 
    { 
     DropDay.Items.Add(i.ToString()); 
    } 
+0

Все выглядит хорошо в этом коде, проблема в том, как вы заполняете падение вниз и почему selectedValue является первым каждый раз? Может быть, вы заполните его снова на почте? – Aristos

+0

Вы пробовали DropDay.SelectedText? вы уверены, что назначили правильное значение? также попробуйте [this] (http://stackoverflow.com/questions/11149282/post-asp-net-form-data-to-another-page) post –

+0

В какое время вы выполняете привязку DropDownList? Если это делается на page_load и не обрабатывает условие ispostback, ваше выбранное значение будет сброшено до обработки кнопки button_click. Вероятно, вы должны связать свой список во время prerender, на! PostBack – jbl

ответ

1

Ваш код для заполнения DDL должно быть (по крайней мере):

if (!IsPostBack) 
{ 
    DropDay.Items.Clear(); 
     for (int i = 1; i <= 10; i++) 
     { 
      DropDay.Items.Add(i.ToString()); 
     } 
} 

Надеется, что это поможет

+0

спасибо за отзыв. :) Я только недавно начал изучать ASP.NET – Brezhnews

-1

вы пробовали DropDay.SelectedItem.Text?

+0

да, я пробовал это, тот же результат – Brezhnews

0

Вы можете использовать это в первой странице:

Server.Transfer("ASP_2.aspx?dropdown="+DropDay.SelectedValue); 


and in the second page 

protected void Page_Load(object sender, EventArgs e) 
{ 
    string val=Request.QueryString["dropdown"].toString(); 
} 
0

Может быть, вы оставили AutoPostBack свойство DropDownList истинного.

+0

нет, автоповтор является ложным – Brezhnews

0

Выяснил это самостоятельно, просто нужно удалить «DropDay.Items.Clear();»

//DropDay.Items.Clear(); removed this line and the thing was fixed 
for (int i = 1; i <= 10; i++) 
{ 
    DropDay.Items.Add(i.ToString()); 
} 
+0

Это нехорошо практика для стандартной веб-формы asp.net с сценарием обратной передачи. Вы добавляете еще 10 предметов в свой список, что делает его 20-страничным списком. Вы не видите этого из-за Server.Transfer Вы должны работать над механизмом обратной передачи и жизненным циклом страницы. Это поможет вам при создании более сложных функций. – jbl

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