在我的项目中,我使用updatepanel内的Textbox来显示db表中尚不存在的Receipt号。 但是键入时文本框上的textchanged事件不会触发。我的逻辑是在打字时显示可用的收据。如果没有显示任何内容,则用户可以插入该收据编号。
<asp:UpdatePanel ID="updAvailableReceipt" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtReceiptNo" runat="server" class="textBoxStyle" AutoPostBack="true" OnTextChanged="txtReceiptNo_TextChanged"></asp:TextBox>
<asp:GridView ID="grdShowAvailableReceipt" runat="server" EnableTheming="True" ShowHeader="False"></asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtReceiptNo" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
protected void txtReceiptNo_TextChanged(object sender, EventArgs e)
{
param = ParameterClass.IniliazeParameter(1);
int count=0;
ParameterClass.AddParameter(ref param, "@ReceiptNumber", txtReceiptNo.Text, ref count);
grdShowAvailableReceipt.DataSource = new bAuctionPayment().Fetch(RecordFetchMode.FethcAvailableReceipt, param);
grdShowAvailableReceipt.DataBind();
}
这个问题已经存在但尚未回答......
答案 0 :(得分:1)
键入时不会触发Textchanged事件。当你失去焦点时会被解雇所以你的代码很好,只是你期待一些永远不会发生的事情。如果要部分更新页面,请尝试组合jquery ajax调用而不是updatepanel。会在一段时间内尝试给你一个例子。
希望这有助于(目前:))
P.S。:我想知道为什么你为这个问题添加了asp.net mvc标签。
编辑:
链接here有一个可以下载的示例。此示例与您尝试实现的非常相似。看看吧。
正如Saurabh所提到的,你可以在jquery中使用文本框的“keyup”事件来进行链接中给出的ajax调用。以下是相同的代码。
$('#<%= TextBox1.ClientID %>').keyup(function () {
//Make ajax call here
alert('hi'); });
答案 1 :(得分:0)
您可以将Ajax AutoCompleteExtender用于该特定文本框。
<asp:TextBox ID="textbox1" runat="server" AutoPostBack="true"></asp:TextBox>
<asp:AutoCompleteExtender ID="textbox1_AutoCompleteExtender" runat="server" CompletionInterval="1"
CompletionSetCount="10" DelimiterCharacters="" Enabled="True" MinimumPrefixLength="1"
ServiceMethod="CreateAWebServiceMethod"
ServicePath="FilePathWhichContainsTheWebServiceMethod" TargetControlID="textbox1" UseContextKey="True">
</asp:AutoCompleteExtender>
服务方法是您在开始在文本框1中键入时要触发的WebServiceMethod。
服务路径是包含您的Web服务方法的文件的路径。