ASP.NET服务器控件CheckBoxList修改
来源:互联网 发布:什么叫网络打印机 编辑:程序博客网 时间:2024/06/01 10:04
背景:asp.net自带的服务器控件CheckBoxList,在生成Html时,未显示name值,这样在表单提交后,Request.Form(它是根据name值来获取的)无法获取选中的值,故对此控件小小的修改了一下。
下载地址:https://github.com/xucongli1989/XCLNetCheckBox/releases
项目地址:https://github.com/xucongli1989/XCLNetCheckBox
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Collections.Specialized;using System.Text.RegularExpressions;namespace CheckBox{ /// <summary> /// 原理:vs的checkboxlist无value值,因此才有此控件 /// by:xcl @2012.9 qq:80213876 http://blog.csdn.net/luoyeyu1989 (如需修改此控件,请保留此行信息即可,谢谢) /// </summary> [DefaultProperty("Text")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")] public class CheckBox : CheckBoxList { private static string getGuid = "_" + Guid.NewGuid().ToString("N"); protected override void OnLoad(EventArgs e) { #region 设置默认选中项 if (!string.IsNullOrEmpty(this.SetSelectedValues)) { string[] vs = this.SetSelectedValues.Split(','); if (vs.Length > 0) { for (int i = 0; i < vs.Length; i++) { if (vs[i].Length > 0) { if (this.Items.Count > 0) { for (int j = 0; j < this.Items.Count; j++) { if (string.Equals(this.Items[j].Value, vs[i], StringComparison.OrdinalIgnoreCase)) { this.Items[j].Selected = true; break; } } } } } } } #endregion base.OnLoad(e); } /// <summary> /// 以此作为每个item的name /// </summary> public string GetName { get { return getGuid + this.UniqueID.Replace('$', '_'); } } #region 样式 /// <summary> /// UL的class /// </summary> public string UlClass { get; set; } /// <summary> /// Li的class /// </summary> public string LiClass { get; set; } /// <summary> /// UL的style /// </summary> public string UlStyle { get; set; } /// <summary> /// LI的style /// </summary> public string LiStyle { get; set; } #endregion #region 其它信息 /// <summary> /// (如需修改此控件,请保留此信息即可,谢谢) /// </summary> public override void RenderBeginTag(HtmlTextWriter writer) { writer.Write("<!--*****************by xcl @2012.9 http://blog.csdn.net/luoyeyu1989*****************-->"); base.RenderBeginTag(writer); } /// <summary> /// (如需修改此控件,请保留此信息即可,谢谢) /// </summary> public override void RenderEndTag(HtmlTextWriter writer) { writer.Write("<!--*****************by xcl @2012.9 http://blog.csdn.net/luoyeyu1989*****************-->"); base.RenderEndTag(writer); } #endregion private string _selectedValues = string.Empty; /// <summary> /// 设置默认选中值(用,分隔) /// </summary> public string SetSelectedValues { get; set; } /// <summary> /// 渲染html /// </summary> protected override void Render(HtmlTextWriter output) { //base.Render(writer);//莫加此句,加了后,原来的html不会被清空的 StringBuilder str = new StringBuilder(); if (this.Items.Count > 0) { string ulCss=(string.IsNullOrEmpty(this.UlStyle) ? "style='width:100%;list-style-type:none;'" :string.Format("style='{0}'",this.UlStyle))+ (string.IsNullOrEmpty(this.UlClass)?"":string.Format(" class='{0}' ",this.UlClass)); string liCss = (string.IsNullOrEmpty(this.LiStyle) ? "style='width:33%;list-style-type:none;float:left;'" : string.Format("style='{0}'", this.LiStyle)) + (string.IsNullOrEmpty(this.LiClass) ? "" : string.Format(" class='{0}' ", this.LiClass)); str.AppendFormat("<ul {0}>",ulCss); for (int i = 0; i < this.Items.Count; i++) { str.AppendFormat("<li {4}><input type='checkbox' id='{0}{1}' name='{0}' value='{2}' {5}/><label for='{0}{1}'>{3}</label></li>", this.GetName, i, this.Items[i].Value, this.Items[i].Text,liCss,this.Items[i].Selected?"checked='checked'":""); } str.Append("</ul>"); } output.Write(str.ToString()); } }}
- ASP.NET服务器控件CheckBoxList修改
- asp.net CheckBoxList 控件
- asp.net(c#)web服务器控件,多选框checkboxlist控件。
- ASP.NET - CheckBox 和 CheckBoxList Web 服务器控件概述(上)
- ASP.NET - CheckBox 和 CheckBoxList Web 服务器控件概述(下)
- ASP.Net WEB控件 [ 复选框组 CheckBoxList控件 ]
- CheckBoxList服务器控件
- .NET----CheckBoxList控件
- JQuery .Net CheckBoxList控件
- ASP.NET CheckBoxList 组件
- Asp.net服务器端控件CheckBoxList的使用心得
- ASP.net - Checkboxlist 控件高度和滚动条问题
- 详解ASP.net的CheckBox和CheckBoxList控件
- asp.net服务器控件
- ASP.NET - 服务器控件
- ASP.NET服务器控件
- ASP.NET服务器控件
- Asp.net 服务器控件
- NetBIOS_spec
- 海量数据处理算法
- 分布式应用上下文(Distributed ThreadLocal)
- 游标操作实例
- Eclipse快捷键
- ASP.NET服务器控件CheckBoxList修改
- 如何在vs2008上设置出行号呢!
- HTML5基础,第2部分:组织页面的输入
- 生成随机数图片
- java的54种运算符及其优先级
- geotools 使用 部分代码总结
- 键盘键值--ascii码对应表
- 终于搞定GeoTools对PostGis的操作
- USACO Section 1.5