2011-08-25 70 views
2

我有两个文本框和一个下拉列表的自定义控件。我想使它双向数据绑定,所以当我把它放入ie时。详情查看控制是这样的:ASP.NET简单的自定义控件与双向绑定

<asp:MyCustomControl ID="MyId" runat="server" Value1='<%# Bind("val1") %>'> 
    </asp:MyCustomControl> 

那么它应该像普通的TextBox ..

在我的控制我已经定义Value1

[ 
    Bindable(true, BindingDirection.TwoWay), 
    Browsable(true), 
    DefaultValue(0), 
    PersistenceMode(PersistenceMode.Attribute) 
    ] 
    public double Value1 
    { 
     get 
     { 
      if(ViewState["Value1"]==null) 
       return 0; 
      return (double)ViewState["Value1"];     
     } 
     set 
     { 
      ViewState["Value1"] = value; 
     } 
    } 

我想这个控制,以保持简单。

我缺少什么?

+0

您应该看看[开发自定义数据绑定Web服务器控件](http://msdn.microsoft.com/en-us/library/ms366539.aspx#Y4342) - 当涉及到双向数据绑定控制,我不确定是否有这样简单的事情。 – Tim

回答

0

我找到了某种解决方法。控制属性(ascx.cs)现在看起来像这样:

private double _value = 0; 
    [ 
    Bindable(true, BindingDirection.TwoWay), 
    Browsable(true), 
    DefaultValue(0), 
    PersistenceMode(PersistenceMode.Attribute) 
    ] 
    public double Value 
    { 
     get 
     { 
      double d = 0; 
      Double.TryParse(ValueControlTextBox.Text,out d); 
      return d; 
     } 
     set 
     { 
      ValueControlTextBox.Text = String.Format("{0:0.00}", value); 
      _value = value; 
     } 
    } 

而且按照我的需要工作。