0

一个快速的问题.. 我正在尝试创建对象列表并将其分配给网格视图。但是好像没有数据?

另外,我想在每次用户单击添加按钮时保存用户输入(只需要一个想法)。我最好的方法是什么?

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;
        }
    }
}

谢谢

4

3 回答 3

0

您是否希望您的代码片段能够正常工作并需要帮助来定位问题,或者您是否在询问如何在 xaml/c# 代码中编写数据绑定和数据聚合?

您的代码不完整,将无法正常工作。您需要在单击按钮时对列表执行添加操作,您可以从文本框中提取输入。如果您需要列表数据反映到您的 xaml/display,则需要添加通知程序以触发 UI 以刷新数据更改。

您可以从Data-Binding 示例代码中了解如何正确进行双向数据绑定。

于 2013-07-26T00:11:30.200 回答
0

你的OrderItems课是错的。在评论中包含正确的一项

public string productId
{
    get
    {
        return productId; //Change it to return prodId;
    }
}

public string quantity
{
    get
    {
        return quantity; //Change it to return qty;
    }
}

这目前正在进入无限循环。

否则,我在那里看不到任何问题。

于 2013-07-26T00:30:52.197 回答
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();

}
于 2013-07-26T04:19:41.727 回答