统一的获取,设置UI控件值

在编写WebForm或WinForm程序时,我们经常需要编写很多获取,设置UI控件值代码.这确实 是一件重复,麻烦而又容易出错的工作.所以我们应该将这个工作交给计算机去做解放我们的 劳动力.一般来说UI上的控件都是和我们的EntityObject相对应的,所以利用反射将 EntityObject中属性值赋给控件或通过控件填充EntityObject是非常方便的.但是要想让计算 机自动干活就要顶一个规则,就是控件ID = 前缀 + 属性名.比如我们有一个User类其定义如 下:

class User
  {
    string _name;
     string _pwd;
    public string Name
    {
      get { return this._name; }
      set { this._name = value;}
     }
    public string Pwd
    {
      get { return this._pwd; }
      set { this._pwd = value; }
    }
};

而我们要写一个登录界面,那我们就会有txtName和txtPwd两个文本框来 接受输入(我习惯用三个字母缩写来做前缀),这样反射才能派上用场.RoR有条编程理念叫 ”约定由于配置”,我很同意,这可以使我们减少很多无意义的工作.

//控 件类型枚举,一些常用的WinForm和WebForm控件

public enum CtlType
   {
    TextBox,
    DropDownList,
    ComboBox,
    Hidden,
    CheckBox,
  }
  //值对象和控件根据名字 相互映射
  public class ControlHelper
  {
    //id名称前缀 表
    public static readonly string[] PreFix_Table = new string[5];
    static ControlHelper()
    {
      PreFix_Table [(int)CtlType.TextBox]   = "txt";
      PreFix_Table [(int)CtlType.DropDownList] = "drp";
      PreFix_Table [(int)CtlType.ComboBox]   = "cmb";
      PreFix_Table [(int)CtlType.Hidden]    = "hdn";
      PreFix_Table [(int)CtlType.CheckBox]   = "chk";
    }
//解析控件名
    private static string ParseCtlID(string id, CtlType ctlType)
    {
      return id.Replace(PreFix_Table[(int)ctlType], "");
    }
}

时间: 2016-04-20

统一的获取,设置UI控件值的相关文章

javascript-asp.net后台获取前台file控件的值

问题描述 asp.net后台获取前台file控件的值 在asp.net前台使用js函数添加一个file控件(html),现在想在后台获取到前台js添加的file控件的值,使用HttpFileCollection files = HttpContext.Current.Request.Files; 后,必须要在前台添加一个fileupload服务器控件,否则获取不到,什么原理??有人能解释一下吗?? 解决方案 因为你不加服务器端fileupload,表单是不会添加 enctype="multipa

iOS中有遍历父视图的子视图的方法便于统一设置同类控件的属性,Android中有类似的方法吗?

问题描述 iOS中有遍历父视图的子视图的方法便于统一设置同类控件的属性,Android中有类似的方法吗? iOS不论是controller还是View视图都有获取子视图来遍历的方法,Android中对应的办法是什么, 如果Android中遇到了父视图中批量同类型子控件的同一属性的统一设置,该怎么办? 解决方案 Android中ViewGroup及其子类是装载View的容器,具有API:int getChildCount(), View getChildAt(int index),使用这两个方法可

页面提交给别的页面,别的页面怎么获取控件值

问题描述 apx页面使用post提交到另外一个aspx页面,怎么获取页面上的asp:CheckBox的选中值,因为服务器控件没有name值,不能直接使用request.form获得,应该怎么办呢?,因为原aspx页面还要对asp:CheckBox做一些处理,所以不能用html控件代替 解决方案 解决方案二:不可能没name的,默认控件的name和id是一致的,当然asp.net4开始你也可以自定义生成的id和name,你看打开的网页源代码,到底是什么name解决方案三:我设置了控件的静态ID,但

jQuery操作DOM之获取表单控件的值_jquery

本文实例讲述了jQuery操作DOM之获取表单控件的值.分享给大家供大家参考.具体分析如下: HTML属性与DOM属性差别最大的地方,恐怕就要数表单控件的值了.比如,文本输人框的 value属性在DOM中的属性叫defaultValue,DOM中就没有value属性.而选项列表(select) 元素呢,其选项的值在DOM中通常是通过selectedIndex属性,或者通过其选项元素的 selected属性来取得. 由于存在这些差异,在取得和设置表单控件的值时,最好不要使用.attr()方法.而对

jquery获取easyui日期控件的值实现方法_jquery

jquery easyui日期控件中,在页面里用JS拿到设置的日期值的方法 jquery获取easyui日期控件的值 jquery easyui 日期框 有这样的一个日期文本框: <input type="text" name="mdate" size="20" value="" id="mdate" class="easyui-datebox"/>  使用easyui给文本

温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e){        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));    //当然也可以用匿名委托写成

ix able-FixTable 固定表头之后,如果通过JS获取页面上控件的值??

问题描述 FixTable 固定表头之后,如果通过JS获取页面上控件的值?? $(function() { FixTable("MyTable",2, $(document.body).width()+10, $(document.body).height() - 50); }); 解决方案 不用jquery选中你的对象就行了,如果FixTable更改过DOM对象结构,需要用开发工具看下修改后的结构,调整你的选择器

ASP.NET MVC加载用户控件后如何获取其内控件值或赋值

有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不想在控件制器内进行赋值,而是想在视图中使用jQuery来获取用户控件内的控件值或是为它们赋值.那需要怎样来做呢? 下面Insus.NET花上少少时间,做个简单的例子,演示与分享实现的方法. 实现之前,先修改一下AscxUtility.cs这个类中的 public static HtmlString Rende

我在UltraWebTab控件中动态的添加了checkboxlist控件,现在我想获取这个checkboxlist控件的每一行的text值

问题描述 我在UltraWebTab控件中动态的添加了checkboxlist控件,现在我想获取这个checkboxlist控件的每一行的text值.如何获取啊?新人提问请各位大虾教教小弟.以下是部分代码:Infragistics.WebUI.UltraWebTab.Tabtab;tab=newInfragistics.WebUI.UltraWebTab.Tab(ds.Tables[0].Rows[i]["G_Name"].ToString());//tab.ContentPane.T