C# 如何将gridview与对象列表绑定?
一个简短的问题。。我正在尝试创建对象列表并将其指定给gridview。但它似乎没有数据 此外,我想保存用户输入每次用户点击添加按钮(只需要一个想法)。我最好的方法是什么C# 如何将gridview与对象列表绑定?,c#,asp.net,list,gridview,C#,Asp.net,List,Gridview,一个简短的问题。。我正在尝试创建对象列表并将其指定给gridview。但它似乎没有数据 此外,我想保存用户输入每次用户点击添加按钮(只需要一个想法)。我最好的方法是什么 List<OrderItems> orderItem = new List<OrderItems>(); protected void Page_Load(object sender, EventArgs e) { orderItem.Add(new OrderItems("Test1", "T
List<OrderItems> orderItem = new List<OrderItems>();
protected void Page_Load(object sender, EventArgs e)
{
orderItem.Add(new OrderItems("Test1", "Test2"));
orderItem.Add(new OrderItems("Test1", "Test2"));
orderItem.Add(new OrderItems("Test1", "Test2"));
orderItem.Add(new OrderItems("Test1", "Test2"));
orderItem.Add(new OrderItems("Test1", "Test2"));
}
protected void btnAddItem_Click(object sender, EventArgs e)
{
// Producing an error of no data
grdTest.DataSource = orderItem;
grdTest.DataBind();
}
谢谢您是否希望您的代码片段能够正常工作并需要帮助查找问题,或者您正在询问如何在xaml/c#代码中对数据绑定和数据聚合进行编码 您的代码不完整,无法工作。您需要在单击按钮时向列表执行添加操作,您可以从文本框中提取输入。如果需要将列表数据反映到xaml/显示中,则需要添加通知程序以触发UI在数据更改时刷新
您可以从中学习如何正确地进行双向数据绑定。您的
OrderItems
类是错误的。在评论中包括正确的一个
public string productId
{
get
{
return productId; //Change it to return prodId;
}
}
public string quantity
{
get
{
return quantity; //Change it to return qty;
}
}
这是目前进入无限循环
否则,我看不出有任何问题。这不是最好的模式。我将创建一个静态存储库类。既然您没有绑定页面加载,为什么要在页面加载中创建项目。只需在单击按钮时创建项目,但我会使用repository类,因为您正在创建一个实体。为什么要写比你必须写的更多的代码,你的类是错误的,只是使用速记方法。这里有一个好的设计模式需要学习 顺便说一句,我会用整数表示数量
public class OrderItem
{
public string ProductId { get; set; }
public int Quantity { get; set; }
}
public static class OrderItemRepository()
{
public static List<OrderItem> GetOrderItems()
{
List<OrderItem> rv = new List<OrderItem>();
rv.Add(new OrderItem{ ProductId="1", Quantity=2});
return rv;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
//bind grid here if need be.
}
}
private BindGrid()
{
grdTest.DataSource = OrderItemRepository.GetOrderItems();
grdTest.DataBind();
}
protected void btnAddItem_Click(object sender, EventArgs e)
{
BindGrid();
}
公共类OrderItem
{
公共字符串ProductId{get;set;}
公共整数数量{get;set;}
}
公共静态类OrderItemRepository()
{
公共静态列表GetOrderItems()
{
List rv=新列表();
添加(新订单项{ProductId=“1”,数量=2});
返回rv;
}
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
//如果需要,在此处绑定网格。
}
}
私有BindGrid()
{
grdTest.DataSource=OrderItemRepository.GetOrderItems();
grdTest.DataBind();
}
受保护的无效btnAddItem_单击(对象发送者,事件参数e)
{
BindGrid();
}
否,当前忘记保存输入。上面的代码仅用于测试目的,值是硬编码的。我只是想知道我是否可以用gridview绑定上面的对象列表?为什么它说我的列表不包含任何数据?我注意到你没有调用Page_Load(),它会添加你的硬编码数据。您是否遗漏了这一点,或者没有包含这样的代码。Loaded+=Page_Load;在页面中?嗨,谢谢你的建议。上面的代码只是一个存储值的测试。事实上,目前我创建了一个类来保存列表中的所有值。因此,我接受用户输入,将单击按钮时的值传递给在列表中创建对象的类函数。以便进行删除和更新。谢谢:)
public class OrderItem
{
public string ProductId { get; set; }
public int Quantity { get; set; }
}
public static class OrderItemRepository()
{
public static List<OrderItem> GetOrderItems()
{
List<OrderItem> rv = new List<OrderItem>();
rv.Add(new OrderItem{ ProductId="1", Quantity=2});
return rv;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
//bind grid here if need be.
}
}
private BindGrid()
{
grdTest.DataSource = OrderItemRepository.GetOrderItems();
grdTest.DataBind();
}
protected void btnAddItem_Click(object sender, EventArgs e)
{
BindGrid();
}