用ashx填充select的下拉列表项

<%@ WebHandler Language="C#" Class="Fsll.AJAX_ForDDL" %>    
using System;  
using System.Web;  
using System.Web.SessionState;  
using System.Reflection;  
using System.Data;
using System.Text;
//using Framework.Common.Extensions;  
  
namespace Fsll  
{
    /*----------------------------- Demo -----------------------------  
    $.post("/RMS/RequirementManage/AJAX_ForDDL.ashx?cmd=Test",function(data){ 
        if(data!=null && data.indexOf("[error]")!=-1){   
            //处理错误 
            return;   
        }
        //处理数据
        $("#ddlTest").html(data);
    },"html");  
     */
    /// <summary>  
    /// Author     :  yenange  
    /// Description:  专用于处理AJAX请求, 填充下拉列表的一般处理程序  
    /// Demo       :  如上, 本文件对应 Test() 方法  
    /// Remark     :  此类是公用的ajax请求页,为了简洁与效率,每个方法的方法体请不要超过 4 行。业务逻辑和取数据,请放在BLL层  
    /// Date       :  2012-08-07
    /// </summary>  
    public class AJAX_ForDDL : IHttpHandler, IReadOnlySessionState  
    {
        public AJAX_ForDDL()
        {  
            //初始化Request等    
            Init();  
        }  
          
        public void ProcessRequest(HttpContext context)  
        {  
            #region [ 根据Reqeust["cmd"]来执行相应的方法 ]  
            try  
            {  
                String methodName = Request["cmd"];
                Type type = Type.GetType("Fsll.AJAX_ForDDL");  
                object instance = Activator.CreateInstance(type);  
                MethodInfo method = type.GetMethod(methodName);  
  
                if (null != method)  
                {  
                    method.Invoke(instance, null);  
                }  
            }  
            catch (Exception ex)  
            {
                outputString = "[error]";  
            }  
            #endregion  
  
            //输出结果    
            ResponseWriteResult();  
        }  
  
        #region [ 执行方法. 1.方法名必须与QueryString中的cmd=xxx对应; 2.必须是public类型; 3.输出的内容必须赋给outputString  ]  
        public void Test()  
        {  
            //下面注释去掉即可测试:有异常时的处理    
            //throw new Exception("异常测试的信息!");
            DataTable dt = new DataTable("Test");
            DataColumn dc1 = new DataColumn("ID");
            DataColumn dc2 = new DataColumn("Name");
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            for(int i=0;i<3;i++)
            {
                DataRow dr = dt.NewRow();
                dr["ID"] = i;
                dr["Name"] ="测试名字"+i.ToString();
                dt.Rows.Add(dr);
            }
            //上面做的, 只是取得测试的 DataTable 而已, 正常情况下, 应该从 BLL 层取得DataTable即可。
            //根据DataTable取得对应的html, 并放到outputString供输出.
            GeneralOptionHtmlForDT(dt,"ID","Name", TopOption_All);  
        }  
        #endregion  
  
        #region [ Tools ]  
        protected HttpRequest Request;  
        protected HttpResponse Response;  
        protected HttpServerUtility Server;  
        protected HttpSessionState Session;
        protected readonly String ContentType = "text/plain";
        protected readonly String TopOption_Select = "<option value=''><--请选择--></option>";
        protected readonly String TopOption_All = "<option value=''><--全部--></option>";
        protected static String outputString;   //必须为static    
  
        private void Init()  
        {  
            Request = HttpContext.Current.Request;  
            Response = HttpContext.Current.Response;  
            Server = HttpContext.Current.Server;  
            Session = HttpContext.Current.Session;  
            outputString = "[error]";  
        }  
  
        public bool IsReusable  
        {  
            get  
            {  
                return false;   //必须为false    
            }  
        }  
        /// <summary>    
        /// 输出结果    
        /// </summary>    
        public void ResponseWriteResult()  
        {  
            Response.ContentType = this.ContentType;  
            Response.Write(outputString);  
        }
        /// <summary>
        /// 产生下拉列表项的html, 并赋给输入字符串outputString
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="valueField"></param>
        /// <param name="textField"></param>
        /// <param name="topOptionHtml">第1个option的html</param>
        public void GeneralOptionHtmlForDT(DataTable dt, String valueField, String textField, String topOptionHtml) 
        {
            StringBuilder sb = new StringBuilder();
            if (!String.IsNullOrEmpty(topOptionHtml)) {
                sb.Append(topOptionHtml);
            }
            foreach (DataRow dr in dt.Rows) 
            {
                sb.AppendFormat("<option value='{0}'>{1}</option>", dr[valueField] as String, dr[textField] as String);
            }
            outputString = sb.ToString();
        }
        #endregion  
    }  
}   

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %>

<!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 src="jquery/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function(){
            var $ddlTest=$("#<%=this.ddlTest.ClientID %>");
            $.post("AJAX_ForDDL.ashx?cmd=Test",function(data){ 
                if(data!=null && data.indexOf("[error]")!=-1){   
                    //处理错误
                    alert("出错了!!");
                    return;   
                }
                //处理数据
                $ddlTest.html(data);
            },"html"); 
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlTest" runat="server">
        </asp:DropDownList>
    </div>
    </form>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值