使用对象列表填充UserControl Gridview

我有一个名为“Reasons”的对象列表,其中包含两个属性“Code”和“Text”。 我想用它来填充Gridview的UserControl。 但是,我不明白如何将gridview链接到原因列表,并实际设置从对象中使用哪些数据。

我假设方法是将数据源设置为List,但是,这不起作用,因为它似乎用任何行填充gridview。 有没有更好的方法来解决这个问题?

我假设你在winform C#中这样做。 在asp.net的C#codebehind中应该非常相似。 这里有一些示例代码,您可以轻松自定义为obj类型:

///  /// The test class for our example. ///  class TestObject { public string Code { get; set; } public string Text { get; set; } } void PopulateGrid() { TestObject test1 = new TestObject() { Code = "code 1", Text = "text 1" }; TestObject test2 = new TestObject() { Code = "code 2", Text = "text 2" }; List list = new List(); list.Add(test1); list.Add(test2); dataGridView1.DataSource = list; } 

您假设将DataSource设置为List是正确的。 在将DataSource设置为列表后,还需要记住调用GridView.DataBind()命令。

即:

 List lReasons = Assign List Here.... gvReasons.DataSource = lReasons; gvReasons.DataBind(); 

此外,如果要将两个属性设置为GridView中的列,请像这样分配它们(假设您在此处使用WebForms而不是WinForms):

       

或者您可以指定AutoGenerateColumns =“true”并让框架自己生成列。

我真的不明白这句话,“我想用它来填充Gridview的UserControl。”? 但是,如果您要问的问题是如何将GridView绑定到您的Reasons对象列表,那么这应该工作:

.aspx

 

代码背后

 protected void Page_Load(object sender, EventArgs e) { List reasonsList = new List() { new Reasons() { Code = "Code 1", Text = "Text 1" }, new Reasons() { Code = "Code 2", Text = "Text 2" }, new Reasons() { Code = "Code 3", Text = "Text 3" }, }; GridView1.DataSource = reasonsList; GridView1.DataBind(); } public class Reasons { public string Text { get; set; } public string Code { get; set; } } 

虽然在其他答案中建议的绑定到数据源将适用于基本网格,但我不喜欢这种方法b / c它使分页和排序更加困难。 如果您将ObjectDataSource绑定到业务层,从长远来看,您将获得更少的麻烦:

通过代码隐藏或标记DataSource填充gridview?