我的页面是一个包含许多产品和各种尺寸选项的批量订单。
我有一个 gridview,它有 3 个带标签的静态列。 然后有一些动态构建的列。
每个动态构建的列中都有一个文本框。 文本框用于数量。
尝试在每次更改文本框(可能是 ontextchanged 事件)时使用输入的数量更新服务器,或者逐列遍历每一行并收集所有具有数量的项目并处理这些项目及其数量一次全部(通过点击按钮)。
如果我将构建 GridView 的过程置于 if(!Page.IsPostBack) 之后,那么当 textchanged 事件触发时,gridview 只会获取静态字段,而动态字段将消失。
如果我删除 if(!Page.IsPostBack),则收集和构建页面的过程会导致处理工作量过大,并且再次呈现页面的时间过长。
一些建议将不胜感激。
谢谢
最佳答案
我最终通过修改和使用我找到的 GridViewTemplate.cs 动态构建了列 here .
由于我的文本框是根据它们的列名命名的(基于大小选项),我能够遍历大小选项并使用 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 来修改我的购物车。
关于C# GridView 动态构建带有文本框 ontextchanged 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389743/