当前位置: 首页 > 知识库问答 >
问题:

为什么在ASP.NET中检测不到html输入文本框中的更改?

安奇
2023-03-14

我有一个repeater,其中一个列包含一个textbox,上面附加了一个JQuery datepicker和一个update按钮。因此,用户使用datepicker更改日期,单击update并将其写入数据库,原始日期和记录id存储在隐藏字段中。

null

<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>

null

调用此函数

null

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
            }
        }
    }

null

但是,newDueDate变量仍然保留原始的到期日。因此,新旧日期匹配,因此数据库不会更新。如何让它存储新值?

共有1个答案

沈子实
2023-03-14

我不认为您将能够找到您的HTML元素,如果它是在一个中继器。

尝试处理中继器的ItemDataBound事件。

看看这道题中的解法:

如何利用C#获取ASpx页面中repeater控件中的元素Id

 类似资料:
  • 问题内容: 在事件上使用jquery时,仅当输入失去焦点时才会触发事件 就我而言,我需要在输入值更改后立即调用该服务(检查值是否有效)。我该怎么做? 问题答案: 更新为澄清和示例 方法1。事件 在现代浏览器中使用事件。当用户在任何时候将值从一个值更改为另一个值时,都将在用户键入文本字段,粘贴,撤消操作时触发此事件。 在jQuery中这样做 从jQuery 1.7开始,替换为: 方法2。事件 对于较

  • 假设您的页面上有一个简单的文本框和按钮。单击该按钮将更新文本框值: 超文本标记语言: jQuery: 我想为文本框的更改事件添加一个事件侦听器,如下所示: 当您单击按钮时,该警报不会触发,但当您手动更改文本框值并将其焦点移出时,该警报会被触发。 我知道你可以将添加到按钮的onclick事件中,但我希望只通过在文本框中添加事件侦听器来实现这一点。 jsfiddle 谢啦

  • 问题内容: 我想12”3在我的输入标签值中显示 我写这个: 但这是不对的 为什么呢? PS:我必须转移”到",或更改”到’?我不喜欢 问题答案: HTML根本没有像其他语言一样具有转义序列。在HTML属性值中,唯一的特殊字符是,取决于引号”或’。唯一使用这些字符的是字符引用: 一些作者使用字符实体引用“ ;”来编码双引号(”)的实例,因为该字符可用于定界属性值。 或者,您使用单引号,则无需编码双引

  • 我在用python修改文本时遇到了问题,尽管我看到很多人在使用它 我的代码:

  • 问题内容: HTML从早期开始就有框架,但是在最新版本中已弃用。许多浏览器(我曾尝试使用Internet Explorer)甚至无法正确显示框架。 为什么要这样做?镜框的缺点是什么? 问题答案: 雅各布·尼尔森(JakobNielsen)在1996年的专栏批评镜框。一些关键点: 框架会阻止用户正确标记页面。加载带有书签的框架集页面时,用户先前在框架内单击鼠标没有关系。仅保存外部URL,用户必须导航

  • 问题内容: 使用jQuery获取和呈现输入值的方法有哪些? 这是一个: 问题答案: