ASP.NET onBlur方法生成错误

时间:2018-07-09 10:18:17

标签: asp.net sql-server vb.net onblur

我有一个 aspx.page ,该文本框位于其中。

<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并从数据库返回一个值。

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文本框中。

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

2 个答案:

答案 0 :(得分:1)

修复

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

Protected Sub txtPolicyNumber_OnBlur(...

需要决定

您可以在两个地方处理偶数。一个位于选项卡中,另一个位于方法结尾处,关键字为Handle。选择一个,最后两者都做同样的事情。

如果您决定仅使用Handles而不在代码中使用它,则可以将方法设置回Private。

注意

我不确定您是否知道,但是浏览器需要刷新页面才能返回服务器。进行TextChanged可能不会达到您的期望。另外,将您的方法从OnBlur重命名为TextChanged。

答案 1 :(得分:0)

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

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

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

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