• 摘要

  上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态

  • 内容

  我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按钮Button

<body><form id="form1" runat="server"><XYB:TextEdit ID="txt" DropDwonHeight="200" DropdwonWidth="200" runat="server"></XYB:TextEdit><asp:Button runat="server" ID="btn" Text="点击我" OnClick="btn_Click" /></form>
</body>

我们在Page_Load里面给属性赋值,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace XYB.UI
{public partial class TextEditUI : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){txt.DropDwonHeight = 100;txt.DropdwonWidth = 100;}}protected void btn_Click(object sender, EventArgs e){}       }
}

我们运行浏览一下,第一次结果的确是100*100,但当我们点击一下按钮后,长和宽都还原成200了,也就是属性值没有被保存,现在我们只需要修改TextEdit.cs代码了,我们使用ViewState来保存控件属性状态值

using System;
using System.Text;
using System.Web.UI;
using System.ComponentModel;//包含组件开发所必须含有的(属性)Attribute;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;namespace XYB.Controls
{public class TextEdit:TextBox{private int _dropDwonHeight;private int _dropdwonWidth;[Description("下拉框的高度"),//属性的描述Category("下拉框")//所属目录
        ]public int DropDwonHeight{//如果前台控件没有给DropDwonHeight赋值,那它的初始值是50get { return ViewState["DropDwonHeight"] == null ? 150 : Convert.ToInt32(ViewState["DropDwonHeight"]); }set { ViewState["DropDwonHeight"] = value; }}[Description("下拉框的宽度"),Category("下拉框")]public int DropdwonWidth{get { return ViewState["DropdwonWidth"] == null ? 150 : Convert.ToInt32(ViewState["DropdwonWidth"]); }set { ViewState["DropdwonWidth"] = value; }}protected override void Render(HtmlTextWriter writer){base.Render(writer);Panel pnlDropDown = new Panel();pnlDropDown.ID = "pnlDropDownID";pnlDropDown.Height = DropDwonHeight;pnlDropDown.Width = DropdwonWidth;pnlDropDown.Style["border"] = "1px solid #ccc";//设置边框样式pnlDropDown.RenderControl(writer);//把下拉框呈现到网页上
        }        }
}

重新生成控件运行,ok,当页面回发时,属性值依然不变。 

  • 注意

  ViewState只在本页中可以有效,比如A页面中有一个ViewState["A"],那么在B页面中ViewState["A"]是为null的。

  • 下集预告

  自定义控件内嵌资源,预知后事如何,请看下回分解。敬请关注我!!

转载于:https://www.cnblogs.com/xuyubing/p/3325189.html

Asp.net自定义控件开发任我行(4)-ViewState保存控件状态相关推荐

  1. ASP.NET自定义控件开发系列(二)

    在上一篇文章中,通过继承TextBox创建了一个简单的自定义控件. 这篇文章主要讲一下自定义控件中资源文件的封装. 在自定义控件中可能会用到图片.CSS样式表.JS文件等,可以把这些设为控件的属性,让 ...

  2. [转]用 ASP.NET 2.0 改进的 ViewState 加快网站速度

    本文讨论: • ViewState 如何工作 • ASP.NET 2.0 ViewState 的改进 • 使用控件状态维护功能 • 性能考虑 本文使用以下技术: ASP.NET.C# 代码下载: Vi ...

  3. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  4. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...

  5. ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

    ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了一些例 ...

  6. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...

  7. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...

    Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...

  8. [导入]Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]...

    Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][重点推荐控件][示例代码下载] 文章来源:http://blog.csdn.net/chengkin ...

  9. Asp.net中Application Session Cookie ViewState Cache

    Application 1.         Application用来保存所有用户共用的信息 2.         在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Ap ...

  10. 使用ASP.NET技术开发网上书店

    (注意:本文档包括--知识点说明,详细,复习) 共10章 1~4 ASP.NET页面基础 5~7 ASP.NET页面重要组成部分 8~10 ASP.NET锦上添花 知识点说明: 第1章 1)Asp.N ...

最新文章

  1. 逻辑回归损失函数(cost function)
  2. 邮箱自动转发攻击邮件服务器
  3. Webbench的使用
  4. XCTF-高手进阶区:web2
  5. iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)
  6. python内置模块_三分钟读懂Python内置模块collections
  7. AI学习笔记(九)从零开始训练神经网络、深度学习开源框架
  8. C#登录窗口(访问数据库)的制作,类文件的制作及使用
  9. Linux性能优化(十三)——CPU性能测试
  10. 苹果手机投屏软件_苹果手机怎样投屏到笔记本?
  11. perl novel可变剪接识别(1)
  12. ERROR: Check hive‘s usability failed, please check the status of your cluster问题解决
  13. 小程序云开发前端显示云存储的图片
  14. 企业千人千面管理模式_叶平:企业要做大,员工要从“千人千面”到“千人一面”...
  15. 傅立叶变换的实质-正交之美
  16. rpcx服务框架浅析13-远程调用
  17. PCB设计中数字地、模拟地、数字电源、模拟电源的处理方式
  18. 雷达信号处理&重学傅里叶变换(一):Radar cube &multidimensional Fourier transform
  19. 计算机安全原理与实践第3版PDF,windows安全原理与技术.pdf
  20. Asp.net URL重定向后css路径问题

热门文章

  1. H5利用JS调用摄像头实现拍照效果
  2. SPSS(1)--安装hayes process插件及用Bootstrap方法进行中介效应检验
  3. 暴风影音2009 Real插件无法下载安装问题解决
  4. 《PMP学习笔记》4.6 子过程:监控项目工作
  5. Java获取世界各国各城市代码_获取世界各国、全国省份、城市、县
  6. 如何在windows2008/2012上安装启明星系统。
  7. 16家企业、11个领域……京东首开AI加速器,拜倒,拜倒!
  8. Java实现冒泡排序算法
  9. 《CSS权威指南》读书笔记
  10. PHP 实现敏感词过滤(附敏感词库)