У меня есть простая сетка элементов запаса, которую пользователь может перетаскивать из одного места в другое - вычитая 1 из источника и добавляя его в пункт назначения.Обновление скрытого поля в повторителе с помощью JQuery
Начальные значения заполняются с помощью репитера 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 ++;
}
}
}
I Я уверен, что этот бит кода неверен с точки зрения C#;
$("input[name$=rptTyres_hfData_" + dragAttr + "]").val(dragNew);
$("input[name$=rptTyres_hfData_" + dropAttr + "]").val(dropNew);
Любые предложения?
EDIT: Я попытался с помощью скрытого поля HTML, а и чтобы изменить значение скрытого поля с помощью JQuery:
$("input:hidden[name=hid" + dragAttr + "]").val(dragNew);
$("input:hidden[name=hid" + dragAttr + "]").val(dropNew);
и прочитать значения внести изменения в базу данных:
var hfData = Request.Form["hid" + tyreId];
К сожалению, он принимает значения без изменений, но любое скрытое поле, обновленное JQuery, возвращает null. Я стучу головой о кирпичную стену здесь!