我们如何将gridview与对象列表绑定?

时间:2013-07-25 23:54:43

标签: 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", "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;
        }
    }
}

由于

3 个答案:

答案 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();

}