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。
我有一个 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。