我写的服务器控件(未完,模型如此)

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls; namespace DecColorPicker
{
[DefaultProperty("DecColorPickerControl")]
[ToolboxData("<{0}:DecColorPickerControl runat=server></{0}:DecColorPickerControl>")]
public class DecColorPickerControl : WebControl, IPostBackDataHandler
{ public string ColorValue
{
get
{
string viewstr = this.ID + "_ColorValue";
object text = ViewState[viewstr];
if (text == null)
return string.Empty;
else
return (string)text;
}
set
{
string viewstr = this.ID + "_ColorValue";
ViewState[viewstr] = value;
}
} public string DivContranerID
{
get
{
string viewstr = this.ID + "_DivContranerID";
String s = (String)ViewState[viewstr];
return ((s == null) ? this.ID + "DecTextBox" : s);
} set
{
string viewstr = this.ID + "_DivContranerID";
ViewState[viewstr] = value;
}
} public string PickerBtnID
{
get
{
string viewstr = this.ID + "_PickerBtnID";
String s = (String)ViewState[viewstr];
return ((s == null) ? this.ID + "_PickerBtn" : s);
} set
{
string viewstr = this.ID + "_PickerBtnID";
ViewState[viewstr] = value;
}
} [Description("设置按钮的文本")]
public string PickerBtnText
{
get
{
string viewstr = this.ID + "_PickerBtnText";
String s = (String)ViewState[viewstr];
return ((s == null) ? "选择颜色" : s);
} set
{
string viewstr = this.ID + "_PickerBtnText";
ViewState[viewstr] = value;
}
} [Description("是否显示按钮")]
public bool ShowPickerBtn
{
get
{
string viewstr = this.ID + "_ShowPickerBtn";
var s = ViewState[viewstr];
return s == null ? true : (Convert.ToBoolean(s));
} set
{
string viewstr = this.ID + "_ShowPickerBtn";
ViewState[viewstr] = value;
}
} #region 选择器配置 [Bindable(false), DefaultValue(""), Browsable(true), Description("颜色选择器的宽度"), Category("选择器设置")]
public string PickerWidth
{
get
{
string viewstr = this.ID + "_PickerWidth";
String s = (String)ViewState[viewstr];
return ((s == null) ? "" : s);
}
set
{
string viewstr = this.ID + "_PickerWidth";
ViewState[viewstr] = value;
}
}
[Bindable(false), DefaultValue(""), Browsable(true), Description("颜色选择器的高度"), Category("选择器设置")]
public string PickerHeight
{
get
{
string viewstr = this.ID + "_PickerHeight";
String s = (String)ViewState[viewstr];
return ((s == null) ? "" : s);
}
set
{
string viewstr = this.ID + "_PickerHeight";
ViewState[viewstr] = value;
}
} #endregion public string Text
{
get
{
object text = ViewState["Text"];
if (text == null)
return string.Empty;
else
return (string)text;
}
set
{
ViewState["Text"] = value;
}
}
public event EventHandler TextChanged; protected void OnTextChanged(EventArgs e)
{
if (TextChanged != null)
TextChanged(this, e);
} public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
string postedData = postCollection[postDataKey];//回发回来的字符串 if (!this.ColorValue.Equals(postedData))
{
this.ColorValue = postedData;
return true;
}
else
{
return false;
}
} public void RaisePostDataChangedEvent()
{
OnTextChanged(EventArgs.Empty);
}
protected override void Render(HtmlTextWriter writer)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<div id=\"{0}\">", this.DivContranerID);
sb.AppendFormat("<script>{0}</script>", DecColorPicker.Properties.Resources.colorPicker);
//注意此处必须为UniqueID 原因是与LoadPostData的postDataKey 一一对应 lcc
sb.AppendFormat("<input type='text' onclick='colorPicker(event)' id='{0}' name='{0}' />", this.UniqueID);
if (this.ShowPickerBtn)
{
sb.AppendFormat("<input type=\"button\" value=\"{0}\" onclick=\"document.getElementById('{1}').click();\">", this.PickerBtnText, this.UniqueID); }
sb.Append("</div>");
writer.Write(sb.ToString()); }
}
}

注意:
sb.AppendFormat("<input type='text' onclick='colorPicker(event)' id='{0}' name='{0}' />", this.UniqueID);

这个textbox的ID必须为UniqueID,如果填写别的ID将无法进行PostData的回发绑定。

此问题我纠结了很久。才发现的。。。。

服务器控件数据回发实现IPostBackDataHandler需注意的的更多相关文章

  1. 在 ASP.NET 网页中不经过回发而以编程方式实现客户端回调

    在 ASP.NET 网页的默认模型中,用户会与页交互,单击按钮或执行导致回发的一些其他操作.此时将重新创建页及其控件,并在服务器上运行页代码,且新版本的页被呈现到浏览器.但是,在有些情况下,需要从客户 ...

  2. 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。

    问题补充: “/Source”应用程序中的服务器错误. 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或 ...

  3. asp.net 回发或回调参数无效的各种情况分析及解决办法

    昨天,在实现级联菜单的时候,突然出现一下错误: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中 ...

  4. 点击datalist中Button按钮出现“回发或回调参数无效......”

        遇到问题: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page ...

  5. FineUIMvc随笔 - 不能忘却的回发(__doPostBack)

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户反馈 有网友在官方论坛抛出了这么一个问题,似乎对 FineUIMvc 中的浏览器端与服务器端的交互方式很有异议. 这里面的关 ...

  6. 转:运行page页面时的事件执行顺序及页面的回发与否深度了解

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  7. FineUIMvc随笔(3)不能忘却的回发(__doPostBack)

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户反馈 有网友在官方论坛抛出了这么一个问题,似乎对 FineUIMvc 中的浏览器端与服务器端的交互方式很有异议. 这里面的关 ...

  8. System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/>

    转载自http://blog.csdn.net/dongge825/article/details/7868151 关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服 ...

  9. 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证

    WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...

随机推荐

  1. java多线程练习实例

    总结: 循环的使用率蛮高,Thraed.sleep(),try-catch语句 package com.aa; public class West { public static void main( ...

  2. 实例甜点 Unreal Engine 4迷你教程(3)之用C++改变Image小部件的其它属性

    完成本迷你教程之前,请前往完成以下迷你教程: ·实例甜点 Unreal Engine 4迷你教程(2)之用C++改变Image小部件的颜色: 在上一次的迷你教程的LearnWidgets工程上进行(如 ...

  3. Excel开发学习笔记:查找与创建worksheet

    开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 如题,我在ThisWorkbook.vb中添加了一个public函数来 ...

  4. STL的一些技巧函数使用

    1.emplace() 函数和 emplace_back() 函数 C++11的STL中新增加了emplace() 函数和 emplace_back() 函数,用来实现insert() 函数和 pus ...

  5. Android Intent Action 大全

    1.Intent的用法: (1)Action跳转 1. 使用Action跳转,当程序AndroidManifest.xml中某一个 Activity的IntentFilter定义了包含Action,如 ...

  6. centos 系统使用verdaccio搭建npm私库

    .安装nodejs yum install -y nodejs 2.安装verdaccio npm install -g verdaccio --unsafe-perm 3.配置 a.修改配置文件 c ...

  7. ORACLE和MYSQL函数

    函数 编号 类别 ORACLE MYSQL 注释 1 数字函数 round(1.23456,4) round(1.23456,4) 一样: ORACLE:select round(1.23456,4) ...

  8. win7下cygwin 中 root用户的设置

    问题描述: cygwin 在 win10下安装完成后使用当前用户登录后看所在磁盘的文件权限是没有问题的,但在cygwin编译出来的文件的权限为空,这个问题可以使用以下方法来解决: 解决办法: 将cyg ...

  9. Oracle11gR2_ADG管理之恢复主库的truncate表实战

    备库开启flashback database #关闭备库的同步 SQL> alter database recover managed standby database cancel; Data ...

  10. OSGI 模块化

    推荐教程:https://course.tianmaying.com/osgi-toturial+osgi-concept#15