如何解决为什么在 asp.net 中没有检测到 html 输入文本框的变化?
我有一个转发器,其中一列包含一个文本框,上面附加了一个 JQuery 日期选择器和一个更新按钮。因此,用户使用日期选择器更改日期,单击更新并写入数据库。原始日期和记录 ID 存储在隐藏字段中。
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="hidThisID" Value='<%# Eval("orderID") %>' runat="server" />
<asp:HiddenField ID="hidPrevDueDate" Value='<%# Eval("Duebeforedate","{0:dd/MM/yyyy}") %>' runat="server" />
<input type="text" class="form-control fc-datepicker duedateinput" style="width: 150px" value='<%# Eval("Duebeforedate","{0:dd/MM/yyyy}") %>' runat="server" id="fccd" readonly />
<asp:LinkButton ID="btnDateUpdate" OnClick="btnDateUpdate_Click" CssClass="btn btn-primary btn-sm" runat="server" ToolTip="Approved"> Update </asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
调用这个函数
protected void btnDateUpdate_Click(object sender,EventArgs e)
{
foreach (RepeaterItem item in Repeater1.Items)
{
HtmlInputText htmlDueDate = (HtmlInputText)item.FindControl("fccd");
HiddenField hidID = (HiddenField)item.FindControl("hidThisID");
HiddenField hidOldDate = (HiddenField)item.FindControl("hidPrevDueDate");
DateTime prevDueDate = Convert.ToDateTime(hidOldDate.Value.ToString());
DateTime newDueDate = Convert.ToDateTime(htmlDueDate.Value.ToString());
string ID = hidID.Value;
if (prevDueDate != newDueDate)
{
string query = "update [tblOrders] set Duebeforedate=CONVERT(datetime,'" + newDueDate.ToString() + "',103) where [orderID] = '" + ID + "'";
//database stuff here
}
}
}
但是,newDueDate 变量仍保留原始截止日期。因此,旧日期和新日期匹配,因此数据库不会更新。如何让它存储新值?
解决方法
对于双向数据绑定,您需要使用 Bind 关键字而不是 Eval
,修复了,根本不是 btnUpdate 函数,我忘记了这个检查 -
if (!IsPostBack)
{
//bind the repeater
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。