【发布时间】:2011-02-03 21:10:15
【问题描述】:
原帖
那里有 吨 的文章,比我在 SO 上针对我的特定问题发布的答案要多得多。
我正在创建一个网页,其中包含 products 的 DropDownList 控件,用户可以从中选择以输入 order 进行处理。除此之外,还有两 (2) 个其他 DropDownList 控件,其中包含每个特定 产品 的 options 和 accessories。我希望用户能够在 order 对象中输入多个 product 行,以便与相应的 options 和/或 *accessories 一起进行处理。这将减少在数据库中存储客户信息的记录数量。
当用户从这个 DropDownList 中选择时,我想创建一个 products 列表,但是这个列表必须根据 products 的数量动态创建用户必须输入特定的订单。我了解保存数据所涉及的需求,因为它不会自动保存到 ViewState,但无法弄清楚如何将数据推向正确的方向。
由于处理 ViewState 的复杂性,我是否应该寻找使用 ASP.NET 以外的东西来创建我的网页?虽然它可能很复杂,但在尝试这样的行动过程时是否有更好的方法可以使用?
编辑
所以我的发现让我相信,为了在添加数据时正确存储数据,我应该使用 Repeater 控件并将 DataBind 到包含我在 KeyValuePairs 中的数据的 Dictionary 对象。我正在寻找一种简化的方法来代替直接添加一个包含我需要的所有数据的对象。我当然可以将这个类添加到中继器和 DataBind 到它,但是将数据从中继器中重新水化会给我带来很多问题。
public class Order
{
public Order() { }
public string CustomerNamer { get; set; }
public ProductList ProductOrdered { get; set; }
}
public class ProductList : List<Product>
{
public ProductList() { }
}
public class Product
{
public Product() { }
public int ID { get; set; }
public string Name { get; set; }
public string ProdcutCode { get; set; }
}
代码隐藏:
protected void order_add_Click(object sender, EventArgs e)
{
Dictionary<int, Order> objOrders = new Dictionary<int, Order>();
Order objOrder = new Order();
Product objProduct = new Product();
objProduct.Name = "Tire";
objProduct.ProductCode = "75R15";
objOrder.ProductsOrdered = new ProductList();
objOrder.ProductsOrdered.Add(objProduct);
objOrders.Add(0, objOrder);
rptTest.DataSource = objOrders;
rptTest.DataBind();
}
【问题讨论】:
-
我没有看到使用 .NET 有任何问题,也没有看到 ViewState 有任何复杂性。您尝试推送数据的“正确方向”是什么?数据库、会话...?
-
目前我需要存储在 ViewState 中的信息,以便在某种类型的提交或保存按钮的 PostBack 上,我可以控制并读出数据以编译到数据对象类中以进行发布到 MySql DAL。
标签: c# asp.net dynamic repeater