Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将gridview与对象列表绑定?_C#_Asp.net_List_Gridview - Fatal编程技术网

C# 如何将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

一个简短的问题。。我正在尝试创建对象列表并将其指定给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();

}

谢谢

您是否希望您的代码片段能够正常工作并需要帮助查找问题,或者您正在询问如何在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();

}