後臺讀取前臺下拉框選項值(DropDownList)
阿新 • • 發佈:2018-11-26
糾結於到底是原創還是轉載發表,考慮再三,最終還是選擇以轉載發表,本文參考來自於【fanfengchimo】的
http://blog.csdn.net/fanfengchimo/article/details/2078101的部落格文章
及【jack86514】的http://blog.csdn.net/jack86514/article/details/1906436的部落格文章。
本人的開發環境為win7+vs2010旗艦版+IE9
現文章整合後如下
1.vs2010建立web網站
2.default.aspx
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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> <script type="text/javascript"> var httpRequest; //輸入編輯框失去焦點時,觸發ajax載入下拉框(DropDownList)事件 function TextChanged() { var obj = document.getElementById("txtInput"); var pra = "2"; createXMLHttpRequest(); //呼叫doContents函式 httpRequest.onreadystatechange = doContents; //根據不同的PRA值來呼叫不同的服務端方法 httpRequest.open('GET', "request.aspx?pra=" + pra, true); httpRequest.send(null); } //將ajax返回資料載入到下拉框(DropDownList)中 function doContents() { if (httpRequest.readystate == 4) { if (httpRequest.status == 200) { var str = httpRequest.responseText; AddDropDownListItem(str); } } //新增資料到下拉框(DropDownList)中 function AddDropDownListItem(str) { var objItem = str.split('@'); var obj = document.getElementById("ddlSelectList"); obj.options.length = 0; var i; for (i = 0; i < objItem.length; i++) { var item = objItem[i].split(';'); if (item[0] != "" && item[1] != "") { obj.options.add(new Option(item[0], item[1])); } } obj.options.options[0].selected = true; document.getElementById('Hidden1').value = obj.options[0].innerText; } } //建立XMLHttpRequest物件 function createXMLHttpRequest() { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); //httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } //將選中下拉框(DropDownList)的值賦給隱藏控制元件(Hidden1) function func1() { var itemText; var obj = document.getElementById("ddlSelectList"); for (var i = 0; i < obj.options.length; i++) { if (obj.options[i].selected) { itemText = obj.options[i].innerText; document.getElementById('Hidden1').value = itemText; } } } </script> </head> <body> <form id="form1" runat="server"> <div> </div> <p> <input id="txtInput" type="text" onblur="TextChanged();"/> <asp:DropDownList ID="ddlSelectList" runat="server" Height="34px" Width="208px" onchange="func1();"> </asp:DropDownList> <input id="Hidden1" type="hidden" name="Hidden1" /> </p> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> </form> </body> </html>
注意本頁面中需要在第一行增加【EnableEventValidation="false"】,以解決頁面出現【回發或回撥引數無效】的問題。具體見下圖
3.default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { Response.Write(Request.Form["Hidden1"]); } }
4.request.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="request.aspx.cs" Inherits="request" %> <!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> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
5.request.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class request : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
string pra = Request.QueryString["pra"].ToString();
if (pra == "1")
{
Response.Write(GetString1());
}
else
{
Response.Write(GetString2());
}
Response.End();
}
private string GetString1()
{
return "First;[email protected];[email protected]";
}
private string GetString2()
{
return "Third;[email protected];[email protected];[email protected]";
}
}
以上程式碼已在上述開發環境進行測試。現記錄下來,方便以後查詢。目前後臺(button事件)程式碼每次讀取前臺【Hidden1】隱藏控制元件的數值時,頁面都會重新整理一次,個人感覺實用性不是很好。