【问题标题】:How to retain the DropDownList selected input text during the Post back and creation of dynamic web controls如何在回发和创建动态 Web 控件期间保留 DropDownList 选定的输入文本
【发布时间】:2014-06-21 07:25:10
【问题描述】:

我能够基于 DropDownList_SelectedValue 生成一些动态 Web 控件。

问题是选择的输入文本没有保留在主 DropDownList 中,但在回发后,它会选择索引列表中的第一个文本,类似于初始选定值的数据类型。

Databounded 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

如果我在回发后从 My DropDownList 中选择 j,它将保留 g 作为我的 DDL 输入文本。回发后如何保留 j 本身。

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
        }

     }

【问题讨论】:

  • 尝试将选定的值设置为会话。回发时,使用创建的会话设置选定的值。

标签: c# asp.net drop-down-menu web-controls servercontrols


【解决方案1】:

试试这个:

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

在页面加载时,获取会话并将其设置为下拉列表(如果它不为 NULL):

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

希望对你有帮助!

【讨论】:

  • @新手:它不起作用它总是取索引列表中的第一个十进制值。如何保留选定的十进制数据类型或特定数据类型的值。
  • @新手:我是.NET框架和C#的初学者。 Java 脚本我不舒服。仅需要 C# ASP.NET 中的解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
相关资源
最近更新 更多