我最终通过修改和使用我在此处找到的 GridViewTemplate.cs 来动态构建列。
由于我的文本框是根据它们的列名(基于大小选项)命名的,因此我能够遍历大小选项并使用 FindControl 来获取文本框及其值。
protected void cmdSave_OnClick(object sender, EventArgs e)
{
ArrayList itemsOrdered = new ArrayList();
foreach (GridViewRow gvr in gvMainOrderForm.Rows)
{
Label lblItemId = (Label)(gvr.FindControl("lblItemId"));
string itemId = lblItemId.Text;
foreach (string availableOption in availableOptions)
{
TextBox tb = (TextBox)(gvr.FindControl("tb" + availableOption));
if (tb != null && tb.Text != "")
{
ArrayList itemOrdered = new ArrayList();
itemOrdered.Add(itemId);
itemOrdered.Add(availableOption);
itemOrdered.Add(tb.Text);
itemsOrdered.Add(itemOrdered);
}
}
}
}
如果该值不为空,那么我构建了一个包含产品 ID、尺寸选项和数量的小数组。
现在我可以使用 itemsOrdered 来修改我的购物车。