后台读取前台下拉框选项值(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" οnblur="TextChanged();"/>
        <asp:DropDownList ID="ddlSelectList" runat="server" Height="34px" Width="208px" οnchange="func1();">
        </asp:DropDownList>
        <input id="Hidden1" type="hidden" name="Hidden1" />
    </p>
    <asp:Button ID="Button1" runat="server" οnclick="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;1@Second;2@";
    }

    private string GetString2()
    {
        return "Third;1@Nine;2@Ten;3@";
    }
}

以上代码已在上述开发环境进行测试。现记录下来,方便以后查找。目前后台(button事件)代码每次读取前台【Hidden1】隐藏控件的数值时,页面都会刷新一次,个人感觉实用性不是很好。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值