模板化控件的EditItemTemplate中的Usercontrol。如何实现双向数据绑定?

时间:2014-11-11 19:54:55

标签: asp.net webforms

我希望用用户控件替换ASP.NET ListView的EditItemTemplate,但我无法弄清楚如何将它绑定到ListView中的数据项以实现双向数据绑定。数据项不是简单属性。这是一个对象。 这似乎只提供单向Eval类型数据绑定:

<EditItemTemplate>
    <uc:MyUserControl id="thecontrol" runat="server" TheObject='<%# Container.DataItem %>'/>
</EditItemTemplate>

这会出错:

<EditItemTemplate>
    <uc:MyUserControl id="thecontrol" runat="server" TheObject='<%# Bind("Container.DataItem") %>'/>
</EditItemTemplate>

就像这样:

<EditItemTemplate>
    <uc:MyUserControl id="thecontrol" runat="server" TheObject='<%# Bind("this") %>'/>
</EditItemTemplate>

是否有一些绑定表达式语法为EditItemTemplate中的当前项提供双向数据绑定?

编辑。这是用户控件:

public partial class EditItemUserControl : System.Web.UI.UserControl
    {
        public TestObject TheObject
        {
            get
            {
                return new TestObject() { ID = Int32.Parse(hfID.Value), Name = txtName.Text };
            }
            set
            {
                hfID.Value = value.ID.ToString();
                txtName.Text = value.Name;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }

1 个答案:

答案 0 :(得分:0)

仅供参考。我做错了。用户控件存在于呈现它的页面的上下文中,因此不需要在其上设置DataSource。在.ascx文件中,您只需使用:

Text = '<%# Bind("MyProperty") %>'

Text = '<%# Eval("MyProperty") %>'

其中MyProperty是父控件的DataSource的一些属性。