Mobile Web Application中的TextArea控件开发(一)

其实这篇文章本不想写的,但是考虑到这件事也折腾了我大半天的,唉...记下来也给自己一个总结吧.
 
在用VS.NET做移动WEB开发时,很明显有一个控件是非常有用但是VS.NET却没有提供的,那就是TextArea,多行输入.
 
我Google了一下,发现有一篇文章介绍如何自定义这个控件, 原文在这里. 另外,在asp.net网站也有一个现成的控件可以下载, 参考这里.
 
大家可以直接去看我上面提供的两个链接,也可以接着往下看,我会先简要地介绍一下代码开发,然后重点是总结在配置方面的问题.而这一点,上面老外的文章中却言之甚少.
 
开发一个自定义控件,要自己实现两个类,一是派生于某个控件的你想要的控件类,二是负责将这个控件Render出来的适配器类(Adapter).
 
首先,我们实现一个叫MultiLineTextBox类,派生于TextBox类,比较简单,就是多了两个属性Cols和Rows.代码如下: 
  public   class  MultiLineTextBox : System.Web.UI.MobileControls.TextBox
 

  
  
private int _cols=0;
  
public int Cols
  
{
   
getreturn this._cols; }
   
setthis._cols=value; }
  }
 
  
private int _rows=0;
  
public int Rows
  
{
   
getreturn this._rows; }
   
setthis._rows=value; }
  }

 }
  
当然你也可以象老外文章那样,直接把两个属性值放在ViewState中,如果你不打算在你的程序中禁用ViewState的话,这应该是一个更好的办法.
 
第二步,实现一个派生于ControlAdapter的MultiLineTextBoxAdapter类,重载一个属性和一个方法即可.代码如下:
public   class  HTMLMultiLineTextBoxAdapter : System.Web.UI.MobileControls.Adapters.ControlAdapter
 
{
  
protected new MultiLineTextBox Control
  
{
   
get  {  return (MultiLineTextBox)base.Control;   }
  }

 
  
public override void Render(HtmlTextWriter writer)
  
{
   writer.WriteBeginTag(
"textarea");
      
   String renderName;
   
if(Device.RequiresAttributeColonSubstitution)
   
{
    renderName 
= Control.UniqueID.Replace(':'',');
   }

   
else
   
{
    renderName 
= Control.UniqueID;
   }

   writer.WriteAttribute(
"name", renderName);  
   writer.WriteAttribute(
"cols",Control.Cols.ToString());
   writer.WriteAttribute(
"rows",Control.Rows.ToString());
      
   writer.Write(
">");
   writer.Write(Control.Text);
   writer.WriteEndTag(
"textarea");

  }

 }

 
 
属性Control的重载说明我要管理的类叫MultiLineTextBox.而重载的Render方法则具体了如何在页面中去表现这个控件,就是输出一个textarea标签.
 
第三步,修改web.config,增加对设备的支持,我就是在这一步被卡住了...先提交吧,下一篇再讨论.
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值