首页 新闻 会员 周边 捐助

关于用户控件数据绑定的问题

0
悬赏园豆:5 [已解决问题] 解决于 2009-01-06 16:07

我想创建一个用户控件,功能类似于TextBox,但多给了一个默认值

方法一:直接继承TextBox

 

 

Code
public class NameInput01 : TextBox
{
[Bindable(
true)]
[Category(
"Appearance")]
[DefaultValue(
"")]
[Localizable(
true)]
public string Value
{
get
{
object viewState = ViewState["Value"];
return ((viewState == null) ? "" : (string)viewState);
}
set
{
ViewState[
"Value"] = value;
}
}

protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Text = (String.IsNullOrEmpty(this.Value)) ? "ENTER YOUR NAME" : this.Value;
}
}

 

但这样在应用的时候不能被绑定,如:

<bse:NameInput01 ID="nameInput01" runat="server" Value=“BURNING” />

结果是 BURNING

<bse:NameInput01 ID="nameInput01" runat="server" Value='<%# Bind("Name") %>' />

结果是 ENTER YOU NAME (控件中的默认值)

 

于是我又尝试了方法二:继承CompositeControl

 

Code
public class NameInput02 : CompositeControl
{
[Bindable(
true)]
[Category(
"Appearance")]
[DefaultValue(
"")]
[Localizable(
true)]
private TextBox textBox;

public string Value
{
get
{
object viewState = ViewState["Value"];
return ((viewState == null) ? "" : (string)viewState);
}
set
{
ViewState[
"Value"] = value;
}
}

protected override void CreateChildControls()
{
Controls.Clear();
textBox
= new TextBox();
textBox.Text
= (String.IsNullOrEmpty(this.Value)) ? "ENTER YOUR NAME" : this.Value;
Controls.Add(textBox);
ChildControlsCreated
= true;
}
}

这样虽然在应用的时候能被绑定了,但却失去了TextBox本身的一些方法和属性例如 ForeColor OnTextChanged之类的都不起作用了。

因为这是一个组合控件,它当然不会有 TextBox 放进来用而已,当然不会有 TextBox 的属性和方法。

不过可以通过给组件添加属性,然后把它复制给子控件,但事件就不知道怎么处理了。

 

我的一问是,第一种方法原本应该顺利成章,但为什么却不能动态绑定了?


不知道有没有更好的解决方法

(我实在没分了 -_-! )

burning的主页 burning | 初学一级 | 园豆:0
提问于:2009-01-06 13:40
< >
分享
最佳答案
0

我对你的"代码一"改了下,看看是你想要的不

关于OnInit事件,没做处理.测试过可以绑定数据

Code
程序员老李 | 小虾三级 |园豆:790 | 2009-01-06 15:51
其他回答(2)
0

222

Jared.Nie | 园豆:1940 (小虾三级) | 2009-01-06 14:23
0

因为

<bse:NameInput01 ID="nameInput01" runat="server" Value=“BURNING” />在控件初始化时就进行了赋值

<bse:NameInput01 ID="nameInput01" runat="server" Value='<%# Bind("Name") %>' />必需要在控件调用DataBind()方法以后才有效。

你检查一下看看执行顺序问题

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-06 14:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册