我有一个名为“Reasons”的对象列表,其中包含两个属性“Code”& “文本”。我想用它来填充Gridview的UserControl。但是,我不明白如何将gridview链接到原因列表,并实际设置从对象中使用哪些数据。
我认为这种方法是将数据源设置为List,但是,这样做不起作用,因为它似乎用任何行填充gridview。有没有更好的方法解决这个问题?
答案 0 :(得分:5)
我假设你在winform C#中这样做。它应该与asp.net的C#codebehind非常相似。 这里有一些示例代码,您可以轻松自定义为obj类型:
/// <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;
}
答案 1 :(得分:4)
您认为将DataSource设置为List是正确的。在将DataSource设置为列表后,还需要记住调用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”并让框架自己生成列。
答案 2 :(得分:2)
我真的不明白这句话,“我想用它来填充Gridview的UserControl。”?但是,如果您要问的问题是如何将GridView绑定到您的Reasons对象列表,那么这应该有效:
.aspx Page
<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; }
}
答案 3 :(得分:1)
虽然在其他答案中建议的绑定到数据源将适用于基本网格,但我不喜欢这种方法b / c它使分页和排序更加困难。如果您按照此处的建议将ObjectDataSource绑定到业务层,那么从长远来看,您会遇到更少的麻烦: