自定义控件

islet2004 2005-11-17 10:59:12
各位大虾
小弟想创建一个自定义的 TextBox 控件打包成 dll
控件有 value 属性外,还要有储存客户端jscript语句写入值的另一属性(如 value2)
如何在服务器端取得 value 和 value2 改变后的值
(value 可以由 Text 属性取得,但 value2 实现不了服务器端取值)
请帮帮忙啊

...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
clxxj 2005-11-18
  • 打赏
  • 举报
回复
//看看我写的一个集合TextBox和RegularExpressionValidator控件的代码.
//或许对你有所启发.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;

namespace CustomControls
{
/// <summary>
/// CustomNumeric 的摘要说明。
/// </summary>
public class CustomTextBox:Control, INamingContainer
{
private string cur_id ="txtNum";
public CustomTextBox()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private ValidatorDisplay SetDisplayType;

[Description("验证程序的显示方式"),DefaultValue("Static")]
public ValidatorDisplay Display
{
get
{
return this.SetDisplayType;
}
set
{
this.SetDisplayType = value;
this.EnsureChildControls();
}
}

/// <summary>
/// 输入长度
/// </summary>
public int MaxLength
{
get
{
if(ViewState["maxLength"]==null)
return 8;
else
return (int)ViewState["maxLength"];
}
set
{
this.ViewState["maxLength"] = value;
}
}

/// <summary>
/// 输入长度
/// </summary>
public int width
{
get
{
if(ViewState["width"]==null)
return 100;
else
return (int)ViewState["width"];
}
set
{
this.ViewState["width"] = value;
}
}

public bool Enabled
{
get
{
this.EnsureChildControls();
return ((TextBox)this.Controls[0]).Enabled;
}
set
{
this.EnsureChildControls();
((TextBox)this.Controls[0]).Enabled = value;
}
}

[Description("文本值"),DefaultValue(0)]
public string Text
{
get
{
this.EnsureChildControls();
return ((TextBox)this.Controls[0]).Text;
}
set
{
this.EnsureChildControls();
((TextBox)this.Controls[0]).Text = value;
}
}

[Description("控件ID")]
public override string ID
{
get
{
return cur_id;
}
set
{
cur_id = value;
this.EnsureChildControls();
}
}

[Description("错误信息")]
public string ValidationExpression
{
get
{
this.EnsureChildControls();
return ((RegularExpressionValidator)this.Controls[1]).ValidationExpression;
}
set
{
this.EnsureChildControls();
((RegularExpressionValidator)this.Controls[1]).ValidationExpression = value;
}
}

[Description("用于确定有效性的正则表达式")]
public string ErrorMessage
{
get
{
this.EnsureChildControls();
return ((RegularExpressionValidator)this.Controls[1]).ErrorMessage;
}
set
{
this.EnsureChildControls();
((RegularExpressionValidator)this.Controls[1]).ErrorMessage = value;
}
}

protected override void CreateChildControls()
{
TextBox box = new TextBox();
box.Enabled=true;
box.EnableViewState = true;
this.Controls.Add(box);
box.ID = cur_id+box.ClientID;


RegularExpressionValidator rev = new RegularExpressionValidator();
rev.EnableViewState = true;
this.Controls.Add(rev);
rev.ID = cur_id+rev.ClientID;

this.PreRender +=new System.EventHandler(this.contol_Load);
}
private void contol_Load(object sender, System.EventArgs e)
{
((RegularExpressionValidator)this.Controls[1]).ValidationExpression = this.ValidationExpression;
((RegularExpressionValidator)this.Controls[1]).ErrorMessage = this.ErrorMessage;
((RegularExpressionValidator)this.Controls[1]).Display = this.Display;
((RegularExpressionValidator)this.Controls[1]).ControlToValidate =((TextBox)this.Controls[0]).ID;
}
}
}
clxxj 2005-11-18
  • 打赏
  • 举报
回复
public class MyControl: System.Web.UI.WebControls.TextBox
Control, INamingContainer
islet2004 2005-11-18
  • 打赏
  • 举报
回复
谢谢clxxj
我再看看
islet2004 2005-11-17
  • 打赏
  • 举报
回复
多谢clxxj
我定义控件的方法
public class MyControl: System.Web.UI.WebControls.TextBox
{
.......
}
在里面添加了子控件TextBox
protected override void Render(HtmlTextWriter writer)
{
TextBox a = new TextBox();
a.ID = this.ID + "_0";
this.Controls.Add(a);
}
客户端看不到有第二个TextBox啊
clxxj 2005-11-17
  • 打赏
  • 举报
回复
在自定义控件中,多放多一个隐藏控件.
并设定一个属性如VALUE2
private void contol_Load(object sender, System.EventArgs e)
{
((TextBox)Controls[1]).Text=this.VALUE2;
}

public string VALUE2
{
get
{
return ((TextBox)Controls[1]).Text;
}
set
{

((TextBox)Controls[1]).Text = value;
}
}

服务端读取的时候就访问VALUE2这个属性

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧