用对象列表填充UserControl Gridview
本文关键字:UserControl Gridview 填充 列表 对象 | 更新日期: 2023-09-27 18:04:35
我有一个名为"Reasons"的对象列表,它包含两个属性"Code" &"文本"。我想用这个来填充Gridview的UserControl。然而,我不明白如何将网格视图链接到原因列表,并实际设置要从对象中使用哪些数据。
我认为该方法是将数据源设置为列表,然而,这是不工作的,因为它似乎填充gridview与任何行。有更好的方法来解决这个问题吗?
我假设你在winformc#中做这个。在asp.net的c#后台代码中应该是相当相似的。下面是一些示例代码,您可以轻松地定制为您的对象类型:
/// <summary>
/// The test class for our example.
/// </summary>
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<TestObject> list = new List<TestObject>();
list.Add(test1);
list.Add(test2);
dataGridView1.DataSource = list;
dataGridView1.DataBind();
}
您假设将数据源设置为列表是正确的。您还需要记住在将数据源设置为列表后调用GridView.DataBind()命令。
即:
List<Reasons> lReasons = Assign List Here....
gvReasons.DataSource = lReasons;
gvReasons.DataBind();
另外,如果你想设置你的两个属性作为列在你的GridView,分配他们像这样(假设你在这里与WebForms工作,而不是WinForms):
<asp:GridView ID="gvReasons" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Code" />
<asp:BoundField DataField="Text" />
</Columns>
</asp:GridView>
或者您可以指定AutoGenerateColumns="true",让框架自己生成列
我真的不明白这句话,"我想用这个来填充一个Gridview的UserControl ."?然而,如果你问的问题是如何绑定GridView到一个列表的原因对象,那么这应该工作:
。aspx页
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="true">
</asp:GridView>
</div>
</form>
代码后面
protected void Page_Load(object sender, EventArgs e)
{
List<Reasons> reasonsList = new List<Reasons>()
{
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; }
}
虽然其他答案中建议的绑定到数据源将适用于基本网格,但我不喜欢这种方法,因为它使分页和排序更加困难。如果按照下面的建议将ObjectDataSource绑定到业务层,从长远来看会少一些麻烦:
通过代码隐藏或标记数据源填充gridview ?