将数据绑定到ASP.NET控件
有没有办法将自定义类自动绑定到给定的一组web控件?例如,假设我有一个类的实例将数据绑定到ASP.NET控件,asp.net,data-binding,Asp.net,Data Binding,有没有办法将自定义类自动绑定到给定的一组web控件?例如,假设我有一个类的实例BindableObject public class BindableClass { public string FirstString { get; set; } public string SecondString { get; set; } public bool BooleanValue { get; set; } } 我希望能够(以某种方式)做到 前提是我以前定义了什么是SomeG
BindableObject
public class BindableClass
{
public string FirstString { get; set; }
public string SecondString { get; set; }
public bool BooleanValue { get; set; }
}
我希望能够(以某种方式)做到
前提是我以前定义了什么是SomeGroupOfControls
,而不是必须这样做
txtSomeTextBox.Text = BindableObject.FirstString;
lblSomeTextBox.Text = BindableObject.SecondString;
chkSomeCheckBox.Checked = BindableObject.BooleanValue;
这可能吗?您可以在用户控件和对象上使用反射。您可以循环浏览对象属性,在使用命名约定的usercontrol/panel中搜索webcontrol。检测控件的类型,以便能够设置选中属性或文本属性。我认为这不是解决此类问题的好方法。即使传入一组控件,您如何知道要绑定到哪个控件的字段?当然,有了一大堆逻辑,你可能大部分时间都能让它工作,但我真的不认为它值得做那么多的工作。我也看不出这样做有什么实际的好处 我建议用老一套行之有效的方法:
Product prod = GetSomeProduct();
txtProductName.Text = prod.ProductName;
txtProductCode.Text = prod.ProductCode;
如果您希望将一组对象绑定到一个datbind控件,那将是一个不同的故事,但是在您的情况下,没有理由这么做
以下是如何创建可绑定对象集合的示例:
public class Products : CollectionBase
{
public Products()
{
// default constructor
}
public int Add(Product product)
{
return List.Add(product);
}
public void Remove(Product product)
{
List.Remove(product);
}
public class Product
{
private string productName;
public Product(string Name)
{
productName = Name;
}
public string Name
{
get
{
return productName;
}
set
{
productName = value;
}
}
}
}
你可以用。网上有很多关于如何使用它的教程和例子。它确实适用于DetailsView、GridView和FormView。它是非常可定制和灵活的控件,非常擅长将您的表示模型(aspx)与域模型分离,并允许执行您想要的操作—将目标类的属性映射到aspx中相应的绑定表达式。本文介绍了一个使用反射和一些实用方法的解决方案:
这是一个很好的建议,但实施起来会很难看。
public class Products : CollectionBase
{
public Products()
{
// default constructor
}
public int Add(Product product)
{
return List.Add(product);
}
public void Remove(Product product)
{
List.Remove(product);
}
public class Product
{
private string productName;
public Product(string Name)
{
productName = Name;
}
public string Name
{
get
{
return productName;
}
set
{
productName = value;
}
}
}
}