【发布时间】:2014-11-10 11:23:08
【问题描述】:
我有一个简单的库存项目网格,用户可以将其从一个位置拖到另一个位置 - 从源中减去 1 并在目标中添加一个。
使用 c# 中继器填充初始值,我使用 JQuery 来可视化拖放。
我的问题是当我想点击保存按钮时。我遍历网格,用这些值更新数据库。不变,保存工作(填充所有隐藏字段)。但是遇到重新计算的网格项时,隐藏字段为空。
她是我的中继器:
<asp:Repeater ID="rptTyres" runat="server">
<ItemTemplate>
<li data-id="<%#Eval("TyresId") %>" class="ty"><%#Eval("TyresStockVol") %><asp:HiddenField ID="hfData" runat="server" Value='<%#Eval("TyreStockVol") %>' /></li>
</ItemTemplate>
</asp:Repeater>
这是修改拖放值的 JQuery:
if (dragValue > 0) {
$("[data-id=" + dragAttr + "]").text(dragNew);
$("[data-id=" + dropAttr + "]").text(dropNew);
$("input[name$=rptTyres_hfData_" + dragAttr + "]").val(dragNew); //new source total
$("input[name$=rptTyres_hfData_" + dropAttr + "]").val(dropNew); //new destination total
}
这里是点击事件:
protected void btnSave_Click(object sender, EventArgs e)
{
var tyreId = 1;
foreach (RepeaterItem item in rptTyres.Items)
{
if (item.ItemType == ListItemType.Item
|| item.ItemType == ListItemType.AlternatingItem)
{
var hf = (HiddenField)item.FindControl("hfData");
var hfData = Convert.ToInt32(hf.Value);
UpdateTyre(tyreId, hfData);
tyreId ++;
}
}
}
从 C# 的角度来看,我很确定这段代码是错误的;
$("input[name$=rptTyres_hfData_" + dragAttr + "]").val(dragNew);
$("input[name$=rptTyres_hfData_" + dropAttr + "]").val(dropNew);
有什么建议吗?
编辑:我尝试使用 html 隐藏字段,并使用 JQuery 修改隐藏字段值:
$("input:hidden[name=hid" + dragAttr + "]").val(dragNew);
$("input:hidden[name=hid" + dragAttr + "]").val(dropNew);
并读取值来修改数据库:
var hfData = Request.Form["hid" + tyreId];
不幸的是,它会在未更改的情况下获取值,但是由 JQuery 更新的任何隐藏字段都返回 null。我在这里用头撞砖墙!
【问题讨论】:
标签: c# jquery hidden-field