ASP.NET onBlur 方法生成错误

ASP.NET onBlur method generating error

我有一个 aspx.page,这个 TextBox 就在其中。

<asp:TextBox ID="txtPolicyNumber" runat="server" AutoPostBack="true" Width="90px" OnTextChanged="txtPolicyNumber_OnBlur"></asp:TextBox>

每次我点击这个文本框,输入一些东西然后点击离开(失去焦点)我希望这个方法能够执行。

VB.NET

Private Sub txtPolicyNumber_OnBlur(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPolicyNumber.TextChanged
    txtPlanCode.Text = Company.Applications.ProductionEngine.BusinessAccess.ManualAdjustmentsBusinessAccess.GetPlanCode(txtPolicyNumber.Text)
End Sub

此方法基本上调用 ExecuteScalar 和 returns 来自数据库的值。

SQL

SELECT PolicyPlanCode
FROM bo.PolicyTransactions
WHERE PolicyNumber = @policyNumber
AND PolicyTransactionRowNumberAsc = 1

txtPolicyNumber 保存作为参数@policyNumber 传入的值。

我一加载页面就发生了这个错误。

编译器错误消息:BC30456:'txtPolicyNumber_OnBlur' 不是 'ASP.reporting_manualadjustments_aspx'

的成员

我需要做的是当 txtPolicyNumber 失去焦点时,应该调用 txtPolicyNumber_OnBlur 并且 Sub txtPolicyNumber_OnBlur() 的结果应该出现在 txtPlanCode.Text 文本框中。

关于为什么会出现此错误的任何想法?很高兴做出任何进一步的澄清。

您好,onblur 不是服务器端事件,它是客户端事件,这意味着您必须编写 javascript 方法并在该事件中提供它,您的本地浏览器将调用它。 如果您想在其中进行任何回发,则必须使用 ajax.

但是 OnTextChanged 是一个类似的服务器端事件,如果您想在文本更改时自动触发它,只需在其中命名您的服务器端 vb.net 方法并将 AutoPostBack 属性 设置为 true。 AutoPostBack="True"

例如(在指定服务器端事件时也删除方法中的括号。)

<asp:TextBox AutoPostBack="True"
 ID="txtPolicyNumber" runat="server" Width="80px" OnTextChanged="txtPolicyNumber_OnBlur" ></asp:TextBox>

修正

您的页面看不到该方法,因为它是私有的,请将其设置为受保护。

Protected Sub txtPolicyNumber_OnBlur(...

需要决定

你在两个地方处理偶数。一个在选项卡中,另一个在带有关键字 Handle 的方法末尾。选一个,最后都做同样的事情

如果您决定只使用 Handles 而不是在标记中使用它,那么您可以将您的方法设置回 Private。

备注

不知道你是否知道,浏览器需要刷新页面才能返回到服务器。执行 TextChanged 可能不会达到您的预期。此外,将您的方法从 OnBlur 重命名为 TextChanged。