我有 jQuery Autocomplete(不是 jQueryUI)来在我的数据库中搜索 fname 和 lname。现在它可以搜索名字然后过滤掉并搜索姓氏,这很棒。但是有没有办法反过来呢?
IE。搜索 Crystal 会出现 Crystal Santos、Crystal Wickers、Crystal Hayes 等,
但搜索 Santos 会出现 Santos Rameros、Santos Riveria 等(假设 Santos 是 fname)
有没有办法改变这个?让它过滤 fname 和 lname。
我也可以让它在列中搜索吗?我有一个过滤部门,但有些部门有多个值。它只会在移动到第二个之前搜索第一个。
IE。搜索医疗办公室控制器,您必须先搜索 MEDICAL。您无法搜索 Controller 或 Office 并让它显示该结果。
请告诉我是否需要澄清。
处理程序 ASHX
public void ProcessRequest (HttpContext context) {
string prefixText = context.Request.QueryString["q"];
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["Rollup2ConnectionString"].ConnectionString;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_AUTOCOMPLETE";
cmd.Parameters.Add(new SqlParameter("@SearchText", SqlDbType.VarChar));
cmd.Parameters["@SearchText"].Value = prefixText;
cmd.Connection = conn;
StringBuilder sb = new StringBuilder();
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
sb.Append(sdr["NUID"].ToString() + " ").Append(sdr["FNAME"].ToString() + " ").Append(sdr["LNAME"].ToString() + " ")
.Append(Environment.NewLine);
}
}
conn.Close();
context.Response.Write(sb.ToString());
}
}
}
public bool IsReusable {
get {
return false;
}
}
这是当前 fname lname 的一个,除字段更改外,department 的一个完全相同。
存储过程名称
@SearchText VARCHAR(255)
AS
BEGIN
SET NOCOUNT ON;
SELECT RTRIM(NUID) NUID, RTRIM(FNAME) FNAME, RTRIM(LNAME) LNAME
FROM T_USER
WHERE NUID like @SearchText + '%' OR FNAME like @SearchText + '%' OR LNAME like @SearchText + '%'
END
存储过程部
@SearchText VARCHAR(255)
AS
BEGIN
SET NOCOUNT ON;
SELECT RTRIM(DEPT_DESC) DEPT_DESC, RTRIM(DEPT_ID) DEPT_ID
FROM T_ROLLUP_DEPT
WHERE DEPT_ID like @SearchText + '%' OR DEPT_DESC like @SearchText + '%'
结尾