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

Я могу создать несколько динамических веб-элементов управления на основе DropDownList_SelectedValue.

Проблема состоит в том, что выбранный входной текст не сохраняется в основном DropDownList, но после обратной передачи он выбирает текст, который является первым в списке индекса, подобном типу данных исходного выбранного значения.

DropDownList с привязкой к данным:

COLUMN_NAME  DATA_TYPE  

a            decimal
b            decimal
c            decimal
d            int
e            int
f            varchar
g            varchar
h            varchar
i            varchar
j            varchar

Если я выберу j из My DropDownList после обратной записи, он сохранит g в качестве входного текста DDL. Как сохранить себя после постбэка.

Aspx код:

<asp:DropDownList ID="DropDownList5" runat="server" DataSourceID="column_list_for_filter" DataTextField="COLUMN_NAME" DataValueField="DATA_TYPE" OnSelectedIndexChanged ="DropDownList5_SelectedIndexChanged"  AutoPostBack="true">
    </asp:DropDownList>
<asp:SqlDataSource ID="column_list_for_filter" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString %>" SelectCommand="SELECT COLUMN_NAME AS 'All_Columns', DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_NAME = 'RESULT')"></asp:SqlDataSource>

Код C#:

private void BindDropDownLists()
    {
        foreach (Control ctl in DynamicPanel.Controls)
        {
            if (ctl is DropDownList)
            {
                (ctl as DropDownList).DataBind();
            }
        }
    }

protected void Page_PreInit(object sender, EventArgs e)
     {

         if (!Page.IsPostBack)
         {
             BindDropDownLists();

         }
         else
         {
             createdynamiccontrols_decimal();
         }

         if (DropDownList5.SelectedValue == "decimal")
         {
             createdynamiccontrols_decimal();
         }

         if (DropDownList5.SelectedValue == "varchar")
         {
             createdynamiccontrols_varchar();
         }
     }

protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
     {
        //How to Proceed              
     }

protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
           //How to Proceed
        }

     }

1 ответ

Попробуй это:

protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
 {
    Session["DDLValue"] = dropdownlist.SelectedValue;    
 }

При загрузке страницы получите сеанс и установите его в раскрывающемся списке, если он не равен NULL:

if(Session["DDLValue"] != null)
{
    dropdownlist.SelectedValue = Session["DDLValue"].ToString();
}

Надеюсь, поможет!

Другие вопросы по тегам