![](/img/trans.png)
[英]Set selected value in knockout drop down list after populating it with AJAX
[英]Saving drop down list value and set selected index after postback
我有一個帶有3個下拉列表和文本框的小頁面。 我的目標是選擇下拉框(或任意組合)中的每一個值和后后背部設置有從上搜索的價值選擇的價值。 問題之一是1.在IE中的每次選擇之后,頁面都會進行回發(顯然),即使添加了啟用視圖狀態的屬性,下拉列表也不會保留所選的值。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QSerch.aspx.cs" Inherits="QSerch"
EnableViewState="true" EnableEventValidation="true" EnableViewStateMac="true"%>
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.ddlstl
{
font-size: 13px;
font-family: Arial;
}
#Iframe1
{
height: 700px;
width: 540px;
}
.style2
{
width: 243px;
}
</style>
</head>
<body dir="rtl">
<form id="form1" runat="server" enableviewstate="true">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True"
EnablePartialRendering="true" LoadScriptsBeforeUI="false" ScriptMode="Release">
</asp:ScriptManager>
<div style="float: right; width: 28px;">
</div>
<div style="text-align: right; float: right;">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table border="0">
<tr>
<td style="width: 170px;">
<asp:DropDownList ID="ddlMec" runat="server" AutoPostBack="True" CssClass="ddlstl"
Height="22px" Width="160px" EnableViewState="true" OnSelectedIndexChanged="ddlMec_SelectedIndexChanged">
</asp:DropDownList>
</td>
</tr>
<tr>
<td style="width: 20px;">
<asp:DropDownList ID="ddlTMec" runat="server" AutoPostBack="True" CssClass="ddlstl"
Height="22px" Width="160px" OnSelectedIndexChanged="ddlTMec_SelectedIndexChanged"
EnableViewState="true">
<asp:ListItem Value="-1">בחר תפקיד</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td style="width: 170px;">
<asp:DropDownList ID="ddlArea" runat="server" AutoPostBack="True" CssClass="ddlstl"
DataSourceID="adsArea" DataTextField="name_area" DataValueField="id_area" Height="22px"
Width="160px" OnSelectedIndexChanged="ddlArea_SelectedIndexChanged" AppendDataBoundItems="true"
EnableViewState="true">
<asp:ListItem Value="-1" Text="בחר איזור"></asp:ListItem>
</asp:DropDownList>
<asp:AccessDataSource ID="adsArea" runat="server" DataFile="~/App_Data/Adam.mdb"
SelectCommand="SELECT [id_area], [name_area] FROM [table_area] ORDER BY [name_area]">
</asp:AccessDataSource>
</td>
</tr>
<tr>
<td>
<asp:TextBox runat="server" Text="חיפוש חופשי" ID="txtFreeText" Style="font-size: 12px;
height: 15px; width: 151px" />
<%--<input type="text" value="חיפוש חופשי" onfocus="deleteFreeText()" id="FreeText" name="FreeText"
style="font-size: 12px; height: 15px; width: 151px" runat="server" />--%>
<br />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="right">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<iframe id="Iframe1" runat="server" frameborder="0" name="Iframe1" scrolling="no"
width="360px" src="" style="overflow: auto"></iframe>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
TextBox tb = (TextBox)FindControl("txtFreeText");
tb.Attributes.Add("onfocus", "this.value = ''");
if (!Page.IsPostBack)
{
LoadProffesion();
}
}
前兩個下拉列表(id = ddlMec和id = ddlTMec)沒有與之關聯的任何數據。 希望它將在頁面加載期間綁定到數據。
假設您在第3個下拉列表(id:ddlArea)上一定遇到問題,這可能是由於您使用數據源控件綁定數據這一事實造成的。 因此,每次頁面加載時,它都會重新填充數據,並且所選項目會丟失。
要解決此問題,請嘗試在頁面加載時綁定下拉列表,並借助Page.IsPostBacK屬性對其進行控制,以防止覆蓋。
只需從標記中刪除AutoPostBack =“ True”。
DropDownList不需要AutoPostBack。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.