具有两种方式绑定的 ASP.NET 简单自定义控件

发布于 2024-12-01 13:34:59 字数 775 浏览 0 评论 0原文

我有带有两个文本框和一个下拉列表的自定义控件。我想让它双向数据绑定,所以当我把它放入 ie.详细信息视图控件如下所示:

    <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;
        }
    } 

我希望这个控件保持简单。

我缺少什么?

I have custom control with two textboxes and one drop down list. I want to make it two-way data bound, so when I put it into ie. Details View control like this:

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

then it should work like regular TextBox..

In my control I have Value1 defined:

    [
    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;
        }
    } 

I want this control to keep simple.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

驱逐舰岛风号 2024-12-08 13:34:59

我找到了某种解决方法。控件(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;
        }
    }

这可以按照我的需要工作。

I've found some kind of workaround. The property in control (ascx.cs) now looks like this:

    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;
        }
    }

And that works as I need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文