我有一个名为“Reasons”的对象列表,它包含两个属性“Code”和“Text”。我想使用它来填充GridView的UserControl。但是,我不知道如何将GridView连接到Reasons列表,并实际设置要使用的对象中的哪些数据。
我认为应该将数据源设置为Reasons列表,但是这并没有起作用,因为它似乎没有为GridView填充任何行。是否有更好的解决方案?
我假设你正在使用winform C#进行操作。在C# codebehind for asp.net中,应该非常相似。 这里是一些示例代码,您可以轻松地将其自定义为您的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;
dataGridView1.DataBind();
}
你的想法是正确的,你需要将DataSource设置为List。同时,在设置完DataSource后,还需记得调用GridView.DataBind()方法。
例如:
List<Reasons> lReasons = Assign List Here....
gvReasons.DataSource = lReasons;
gvReasons.DataBind();
<asp:GridView ID="gvReasons" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Code" />
<asp:BoundField DataField="Text" />
</Columns>
</asp:GridView>
我不是很理解这句话的意思:“我想使用它来填充GridView中的UserControl。”?但是,如果你问的问题是如何将GridView绑定到你的Reasons对象列表,那么以下代码应该能够实现:
.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; }
}