Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要
上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态
内容
我们先来看一个例子,后台代码不变,我们只改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保存控件状态相关推荐
- ASP.NET自定义控件开发系列(二)
在上一篇文章中,通过继承TextBox创建了一个简单的自定义控件. 这篇文章主要讲一下自定义控件中资源文件的封装. 在自定义控件中可能会用到图片.CSS样式表.JS文件等,可以把这些设为控件的属性,让 ...
- [转]用 ASP.NET 2.0 改进的 ViewState 加快网站速度
本文讨论: • ViewState 如何工作 • ASP.NET 2.0 ViewState 的改进 • 使用控件状态维护功能 • 性能考虑 本文使用以下技术: ASP.NET.C# 代码下载: Vi ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...
- ASP.NET自定义控件组件开发 第一章 第二篇 接着待续
ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了一些例 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...
- [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...
Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...
- [导入]Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]...
Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][重点推荐控件][示例代码下载] 文章来源:http://blog.csdn.net/chengkin ...
- Asp.net中Application Session Cookie ViewState Cache
Application 1. Application用来保存所有用户共用的信息 2. 在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Ap ...
- 使用ASP.NET技术开发网上书店
(注意:本文档包括--知识点说明,详细,复习) 共10章 1~4 ASP.NET页面基础 5~7 ASP.NET页面重要组成部分 8~10 ASP.NET锦上添花 知识点说明: 第1章 1)Asp.N ...
最新文章
- 人脸识别有什么漏洞,活体检测又是怎么防伪?
- 机器学习笔记: 聚类 模糊聚类与模糊层次聚类(论文笔记 Fuzzy Agglomerative Clustering :ICAISC 2015)
- R-CNN和SPP-net
- [BUUCTF-pwn]——picoctf_2018_are you root
- jquery实现图片懒加载
- Android 4 学习(20):ActionBar
- 计算图层面积(针对于面要素)ArcObject c++
- sqlserver 2008修改数据库表的时候错误提示“阻止保存要求重新创建表的更改”...
- GATK GATK best practices notes
- html 灯箱效果样式,jQuery灯箱效果插件-Swipebox
- websocket客户端与TCP服务器连接异常
- Matlab中mat2str函数使用
- xss基本概念和原理介绍
- Stimulsoft 报表工具单元格内换行
- Spring Boot@Bean
- 复旦Moss团队:Moss参数规模约是ChatGPT的1/10;贾跃亭再获FF执行官身份;PowerToys新版发布|极客头条
- C语言——判断是否被5整除
- ibatis mysql存储过程_分步详解 如何在iBatis中调用存储过程
- win7安装eclipse
- 计算机主板上的ide,主板上的IDE是什么?作用?