• 摘要

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

  • 内容

  我们先来看一个例子,后台代码不变,我们只改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. 人脸识别有什么漏洞,活体检测又是怎么防伪?
  2. 机器学习笔记: 聚类 模糊聚类与模糊层次聚类(论文笔记 Fuzzy Agglomerative Clustering :ICAISC 2015)
  3. R-CNN和SPP-net
  4. [BUUCTF-pwn]——picoctf_2018_are you root
  5. jquery实现图片懒加载
  6. Android 4 学习(20):ActionBar
  7. 计算图层面积(针对于面要素)ArcObject c++
  8. sqlserver 2008修改数据库表的时候错误提示“阻止保存要求重新创建表的更改”...
  9. GATK GATK best practices notes
  10. html 灯箱效果样式,jQuery灯箱效果插件-Swipebox
  11. websocket客户端与TCP服务器连接异常
  12. Matlab中mat2str函数使用
  13. xss基本概念和原理介绍
  14. Stimulsoft 报表工具单元格内换行
  15. Spring Boot@Bean
  16. 复旦Moss团队:Moss参数规模约是ChatGPT的1/10;贾跃亭再获FF执行官身份;PowerToys新版发布|极客头条
  17. C语言——判断是否被5整除
  18. ibatis mysql存储过程_分步详解 如何在iBatis中调用存储过程
  19. win7安装eclipse
  20. 计算机主板上的ide,主板上的IDE是什么?作用?

热门文章

  1. 大数据——Spark GraphX介绍
  2. mysql系列之InnoDB存储引擎结构详解
  3. Webgrid参数格式
  4. 电机学(2) - 变压器
  5. 全国电子设计大赛资料打包网盘10G
  6. 解决windows 您没有权限访问\\192.168.1.X(局域网) 请与网络管理员联系请求访问权限
  7. (转)wxWindows一些网文
  8. webstorm 下载安装教程
  9. 光环PMP 项目范围管理 、项目进度管理、项目成本管理、项目质量管理
  10. 比较器应用二:方波和三角波产生