[英]How to retain the DropDownList selected input text during the Post back and creation of dynamic web controls
我能够基于DropDownList_SelectedValue生成一些动态Web控件。
问题在于,选定的输入文本没有保留在主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
如果我在回发后从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
}
}
尝试这个:
protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
{
Session["DDLValue"] = dropdownlist.SelectedValue;
}
在页面加载时,获取会话并将其设置为下拉列表(如果它不是NULL):
if(Session["DDLValue"] != null)
{
dropdownlist.SelectedValue = Session["DDLValue"].ToString();
}
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.