一个简单的问题..我正在尝试创建对象列表并将其分配给gridview。但似乎没有数据?
另外,我想在每次用户点击添加按钮时保存用户输入(只需要一个想法)。对我来说,最好的方法是什么?
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();
}
这是我的班级:
public class OrderItems
{
private string prodId;
private string qty;
public OrderItems()
{
}
public OrderItems(string prodId, string quantity)
{
this.prodId = prodId;
this.qty = quantity;
}
public string productId
{
get
{
return productId;
}
}
public string quantity
{
get
{
return quantity;
}
}
}
由于
答案 0 :(得分:0)
您是否希望您的代码片段正常工作并需要帮助找到问题,或者您是否在询问如何在xaml / c#代码中编码数据绑定和数据聚合?
您的代码不完整,无法使用。您需要在按钮单击时对列表执行添加操作,您可以从文本框中提取输入。如果您需要列表数据反映到您的xaml / display,您需要添加通知程序以触发UI以刷新数据更改。
您可以从Data-Binding sample code了解如何正确进行双向数据绑定。
答案 1 :(得分:0)
您的OrderItems
课程错了。在评论中包含正确的一个
public string productId
{
get
{
return productId; //Change it to return prodId;
}
}
public string quantity
{
get
{
return quantity; //Change it to return qty;
}
}
目前这将进入无限循环。
否则,我认为没有任何问题。
答案 2 :(得分:0)
这不是最好用的模式。我会创建一个静态存储库类。为什么在页面加载中创建项目,因为您没有绑定page_load。只需在按钮单击中创建项目,但我会使用存储库类,因为您无论如何都要创建实体。为什么要编写比你更多的代码,你的类错了,只需使用简写方法。这是一个很好的设计模式。
我会使用数量btw的整数。
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();
}