Textchange内容

时间:2016-09-12 19:47:12

标签: asp.net vb.net

我有一个带有记录编号的表格,然后是“主要”注释和生效日期的框。

然后我有一个可选的“辅助”备注和生效日期框。

当有人点击按钮编辑主要或次要注释时,它会查看其他注释是否已更改(会话变量设置为“true”为其他文本框的“textchanged”事件触发)。如果是这样,它不会启用与“编辑”按钮匹配的文本框,而是闪烁一条消息,说明要取消或更新其他文本框的更改。

我的问题是,当没有任何更改时,文本框的内容被视为“已更改”。如果我加载记录并运行单独的验证检查,它会验证文本框的内容是否与最初加载到文本框中的数据匹配。然后,当我点击“编辑”按钮时,没有改变任何东西,即使会话变量和文本框中的信息都没有改变,单独的验证也会回来,因为不再匹配。

这是我的验证检查 -

        If Not Session("SN1") Is Nothing Then
        sesslst = sesslst & "<p>Sec Notes match = " & (Trim(Session.Item("SN1").ToString) = Trim(txtSecondaryNotes.Text)).ToString
        sesslst = sesslst & "<p>Sec Date match = " & (Trim(Session.Item("SD1").ToString) = Trim(txtSecEffDate.Text)).ToString
        sesslst = sesslst & "<p>S = " & Trim(Session.Item("SN1").ToString)
        sesslst = sesslst & "<p>F = " & Trim(txtSecondaryNotes.Text)
    End If
    lblTest.Text = sesslst

以下是初始记录加载后的结果:

  

SN1 - 比尔史密斯(父亲)19/12年12月琳达史密斯(母亲)1971年7月22日Boudreau W史密斯(兄弟)4/7/1994

     

SD1 - 4/1/2014 12:00:00 AM

     

Sec Notes match = True

     

秒日期匹配=真

     <=> S =比尔史密斯(父亲)19/12年12月琳达史密斯(母亲)1971年7月22日   Boudreau W Smith(兄弟)6/7/1994

     

F =比尔史密斯(父亲)19/12年12月19日琳达史密斯(母亲)1971年7月22日   Boudreau W Smith(兄弟)6/7/1994

(此示例中的所有特定数据都已更改,因此未显示任何真实的个人信息)

当我单击编辑按钮并再次运行验证循环时,“Sec Notes changed”值将更改为“false”,但没有其他更改。

最初,我有“TextChanged”事件的记录更改集的会话变量。当它保持设置时,尽管没有变化,我在更改事件中添加了额外的验证。如果notes和dates会话变量都与字段信息不匹配,则会将另一个会话变量设置为已更改 -

    Protected Sub txtSecondaryNotes_TextChanged(sender As Object, e As EventArgs) Handles txtSecondaryNotes.TextChanged, txtSecEffDate.TextChanged
    If Not ((Trim(Session.Item("SN1").ToString) = Trim(txtSecondaryNotes.Text)) And (Trim(Session.Item("SD1").ToString) = Trim(txtSecEffDate.Text))) Then
        Session.Item("secondaryEditing") = True
    End If

End Sub

当我单击编辑按钮时,我从未通过检查“secondaryEditing”会话变量(lstSess()proc只列出所有会话变量名称和值,以便我可以看到正在比较的内容) -

    Protected Sub btnEditPrimary_Click(sender As Object, e As EventArgs) Handles btnEditPrimary.Click
    txtPolicy.Text = Trim(txtPolicy.Text).ToUpper
    lstSess()

    If Session.Item("secondaryEditing") = True Then
        secMsg.Visible = True
        Exit Sub
    Else
        secMsg.Visible = False
    End If

所以,我认为最初的问题可能是表单,数据加载和TextChanged事件触发但在按下按钮之前没有被评估,但即使我添加了额外的If - &gt;然后在事件中进行验证,它仍然认为某些事情发生了变化,甚至没有启用该字段中的数据,更不用说操纵了。

如何才能真实地评估该字段中的文本是否已更改?仅供参考 - 使用和不使用“AutoPostBack ='true'”设置asp:TextBox对象,它的运行方式没有区别。

1 个答案:

答案 0 :(得分:0)

拯救你的努力,伙计们。原始程序员没有导入所有必需的System和System.Web类。