1. 程式人生 > >後臺讀取前臺下拉框選項值(DropDownList)

後臺讀取前臺下拉框選項值(DropDownList)

糾結於到底是原創還是轉載發表,考慮再三,最終還是選擇以轉載發表,本文參考來自於【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】隱藏控制元件的數值時,頁面都會重新整理一次,個人感覺實用性不是很好。