AjaxControlToolkit AutoCompleteExtender 不显示建议
AjaxControlToolkit AutoCompleteExtender is not displaying suggestions
我在 asp.net 中使用 AutoCompleteExtender 来获取基于令牌 (empno) 的名称和名称。
它是从数据库中提取的,我可以在 Chrome Dev-tools 的网络选项卡中看到它。但它没有呈现为建议列表。
我对代码的尝试:
<div class="modal-body">
<div class="form-group">
<label for="pToken">Token</label>
<asp:TextBox ID="pToken" runat="server" CssClass="form-control" placeholder="Enter Token No" />
<ajaxcontrol:AutoCompleteExtender runat="server"
ID="acToken" TargetControlID="pToken" MinimumPrefixLength="3"
EnableCaching="true" FirstRowSelected="false"
ServiceMethod="getPatients" ServicePath="CheckPatientDetails.aspx"
CompletionSetCount="6" DelimiterCharacters="|"
CompletionListItemCssClass="AutoCompleteExtender_CompletionListItem"
CompletionListHighlightedItemCssClass="AutoCompleteExtender_HighlightedItem"
CompletionListCssClass="AutoCompleteExtender_CompletionList">
</ajaxcontrol:AutoCompleteExtender>
</div>
<div class="form-group">
<label for="pName">Name</label>
<asp:TextBox ID="pName" runat="server" CssClass="form-control" placeholder="Enter patient name" required />
</div>
<div class="form-group">
<label for="pDesig">Designation</label>
<asp:TextBox ID="pDesig" runat="server" CssClass="form-control" placeholder="Enter designation" />
</div>
<div class="form-group">
<label for="pType">Type</label>
<asp:DropDownList ID="pType" runat="server" CssClass="form-control" required>
<asp:ListItem Value="E" Selected="True">Employee</asp:ListItem>
<asp:ListItem Value="I">In Patient</asp:ListItem>
<asp:ListItem Value="O">Out Patient</asp:ListItem>
<asp:ListItem Value="X">Others</asp:ListItem>
</asp:DropDownList>
</div>
后端代码如下:
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static List<Patient> getPatients(string prefixText, int count)
{
List<Patient> patientList = new List<Patient>();
OracleConnection con = null;
OracleDataReader odr = null;
string query = "select nvl(emp.empid,'') token,DECODE(SHORTNAME,NULL,FIRSTNAME,SHORTNAME) name,DESIGSHORT desigdesc" +
" from employee emp join designation desig on (emp.desigcode = desig.desigcode and desig.isactive = 'Y') " +
" where empid like '%" + prefixText + "%' and emp.EMPSTATUS = 'A' order by empid";
try
{
con = getHRMSConnection();
con.Open();
using (con)
{
using (OracleCommand cmd = new OracleCommand(query, con))
{
odr = cmd.ExecuteReader();
Patient patient = null;
while (odr.Read())
{
patient = new Patient();
patient.setToken(Convert.ToString(odr["token"]));
patient.setName(Convert.ToString(odr["name"]));
patient.setDesignation(Convert.ToString(odr["desigdesc"]));
patientList.Add(patient);
}
}
}
}
catch (Exception ex)
{
}
return patientList;
}
您遇到的问题有很多原因。从基本检查服务路径是否正确开始。
其次,您是否在获取数据的函数上方使用[webmethod]声明。
任务现已完成,我正在正确呈现自动完成功能。发布给那些以后可能会参考这个的人。
我使用这个 link 来获得在模态上呈现的自动完成功能。
Autocomplete extender not working inside modal popup extender
现在我的模态 body 是
<div class="modal-body">
<div class="form-group">
<asp:AutoCompleteExtender ServiceMethod="GetSearch" MinimumPrefixLength="2" CompletionInterval="10"
EnableCaching="false" CompletionSetCount="10" TargetControlID="pToken" ID="AutoCompleteExtender2"
runat="server" FirstRowSelected="false" CompletionListCssClass="autocomplete_completionListElement" CompletionListItemCssClass="autocomplete_listItem"
CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem">
</asp:AutoCompleteExtender>
<label for="pToken">Token</label>
<asp:TextBox ID="pToken" runat="server" CssClass="form-control" placeholder="Enter Token No"/>
</div>
<div class="form-group">
<label for="pName">Name</label>
<asp:TextBox ID="pName" runat="server" CssClass="form-control" placeholder="Enter patient name" required />
</div>
<div class="form-group">
<label for="pDesig">Designation</label>
<asp:TextBox ID="pDesig" runat="server" CssClass="form-control" placeholder="Enter designation" />
</div>
<div class="form-group">
<label for="pType">Type</label>
<asp:DropDownList ID="pType" runat="server" CssClass="form-control" required>
<asp:ListItem Value="E" Selected="True">Employee</asp:ListItem>
<asp:ListItem Value="I">In Patient</asp:ListItem>
<asp:ListItem Value="O">Out Patient</asp:ListItem>
<asp:ListItem Value="X">Others</asp:ListItem>
</asp:DropDownList>
</div>
</div>
服务器端代码是:
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static List<string> GetSearch(string prefixText, int count)
{
OracleConnection con = null;
OracleDataAdapter oda = null;
DataTable dt;
prefixText = prefixText.ToLower();
DataTable Result = new DataTable();
List<string> Output = new List<string>();
string str = "select nvl(emp.empid,'') ||'('||DECODE(SHORTNAME,NULL,FIRSTNAME,SHORTNAME)||','|| DESIGSHORT ||')' employee" +
" from employee emp join designation desig on (emp.desigcode = desig.desigcode and desig.isactive = 'Y') " +
" where lower(empid) like '%" + prefixText + "%' and emp.EMPSTATUS = 'A' order by empid";
con = getHRMSConnection();
using (con)
{
try
{
con.Open();
oda = new OracleDataAdapter(str, con);
dt = new DataTable();
oda.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
Output.Add(dt.Rows[i][0].ToString());
}
}
catch (Exception ex)
{
}
}
return Output;
}
我在 asp.net 中使用 AutoCompleteExtender 来获取基于令牌 (empno) 的名称和名称。 它是从数据库中提取的,我可以在 Chrome Dev-tools 的网络选项卡中看到它。但它没有呈现为建议列表。
我对代码的尝试:
<div class="modal-body">
<div class="form-group">
<label for="pToken">Token</label>
<asp:TextBox ID="pToken" runat="server" CssClass="form-control" placeholder="Enter Token No" />
<ajaxcontrol:AutoCompleteExtender runat="server"
ID="acToken" TargetControlID="pToken" MinimumPrefixLength="3"
EnableCaching="true" FirstRowSelected="false"
ServiceMethod="getPatients" ServicePath="CheckPatientDetails.aspx"
CompletionSetCount="6" DelimiterCharacters="|"
CompletionListItemCssClass="AutoCompleteExtender_CompletionListItem"
CompletionListHighlightedItemCssClass="AutoCompleteExtender_HighlightedItem"
CompletionListCssClass="AutoCompleteExtender_CompletionList">
</ajaxcontrol:AutoCompleteExtender>
</div>
<div class="form-group">
<label for="pName">Name</label>
<asp:TextBox ID="pName" runat="server" CssClass="form-control" placeholder="Enter patient name" required />
</div>
<div class="form-group">
<label for="pDesig">Designation</label>
<asp:TextBox ID="pDesig" runat="server" CssClass="form-control" placeholder="Enter designation" />
</div>
<div class="form-group">
<label for="pType">Type</label>
<asp:DropDownList ID="pType" runat="server" CssClass="form-control" required>
<asp:ListItem Value="E" Selected="True">Employee</asp:ListItem>
<asp:ListItem Value="I">In Patient</asp:ListItem>
<asp:ListItem Value="O">Out Patient</asp:ListItem>
<asp:ListItem Value="X">Others</asp:ListItem>
</asp:DropDownList>
</div>
后端代码如下:
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static List<Patient> getPatients(string prefixText, int count)
{
List<Patient> patientList = new List<Patient>();
OracleConnection con = null;
OracleDataReader odr = null;
string query = "select nvl(emp.empid,'') token,DECODE(SHORTNAME,NULL,FIRSTNAME,SHORTNAME) name,DESIGSHORT desigdesc" +
" from employee emp join designation desig on (emp.desigcode = desig.desigcode and desig.isactive = 'Y') " +
" where empid like '%" + prefixText + "%' and emp.EMPSTATUS = 'A' order by empid";
try
{
con = getHRMSConnection();
con.Open();
using (con)
{
using (OracleCommand cmd = new OracleCommand(query, con))
{
odr = cmd.ExecuteReader();
Patient patient = null;
while (odr.Read())
{
patient = new Patient();
patient.setToken(Convert.ToString(odr["token"]));
patient.setName(Convert.ToString(odr["name"]));
patient.setDesignation(Convert.ToString(odr["desigdesc"]));
patientList.Add(patient);
}
}
}
}
catch (Exception ex)
{
}
return patientList;
}
您遇到的问题有很多原因。从基本检查服务路径是否正确开始。
其次,您是否在获取数据的函数上方使用[webmethod]声明。
任务现已完成,我正在正确呈现自动完成功能。发布给那些以后可能会参考这个的人。
我使用这个 link 来获得在模态上呈现的自动完成功能。 Autocomplete extender not working inside modal popup extender
现在我的模态 body 是
<div class="modal-body">
<div class="form-group">
<asp:AutoCompleteExtender ServiceMethod="GetSearch" MinimumPrefixLength="2" CompletionInterval="10"
EnableCaching="false" CompletionSetCount="10" TargetControlID="pToken" ID="AutoCompleteExtender2"
runat="server" FirstRowSelected="false" CompletionListCssClass="autocomplete_completionListElement" CompletionListItemCssClass="autocomplete_listItem"
CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem">
</asp:AutoCompleteExtender>
<label for="pToken">Token</label>
<asp:TextBox ID="pToken" runat="server" CssClass="form-control" placeholder="Enter Token No"/>
</div>
<div class="form-group">
<label for="pName">Name</label>
<asp:TextBox ID="pName" runat="server" CssClass="form-control" placeholder="Enter patient name" required />
</div>
<div class="form-group">
<label for="pDesig">Designation</label>
<asp:TextBox ID="pDesig" runat="server" CssClass="form-control" placeholder="Enter designation" />
</div>
<div class="form-group">
<label for="pType">Type</label>
<asp:DropDownList ID="pType" runat="server" CssClass="form-control" required>
<asp:ListItem Value="E" Selected="True">Employee</asp:ListItem>
<asp:ListItem Value="I">In Patient</asp:ListItem>
<asp:ListItem Value="O">Out Patient</asp:ListItem>
<asp:ListItem Value="X">Others</asp:ListItem>
</asp:DropDownList>
</div>
</div>
服务器端代码是:
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static List<string> GetSearch(string prefixText, int count)
{
OracleConnection con = null;
OracleDataAdapter oda = null;
DataTable dt;
prefixText = prefixText.ToLower();
DataTable Result = new DataTable();
List<string> Output = new List<string>();
string str = "select nvl(emp.empid,'') ||'('||DECODE(SHORTNAME,NULL,FIRSTNAME,SHORTNAME)||','|| DESIGSHORT ||')' employee" +
" from employee emp join designation desig on (emp.desigcode = desig.desigcode and desig.isactive = 'Y') " +
" where lower(empid) like '%" + prefixText + "%' and emp.EMPSTATUS = 'A' order by empid";
con = getHRMSConnection();
using (con)
{
try
{
con.Open();
oda = new OracleDataAdapter(str, con);
dt = new DataTable();
oda.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
Output.Add(dt.Rows[i][0].ToString());
}
}
catch (Exception ex)
{
}
}
return Output;
}