当前位置:  开发笔记 > 编程语言 > 正文

AutoCompleteExtender问题

如何解决《AutoCompleteExtender问题》经验,为你挑选了1个好方法。

我在ASP.NET/C#中使用AutoCompleteExtender从我的数据库中检索数据,以及该字段的主键.选择名称后,即使在单击"提交"之前也会检索详细信息(名称/ pk),然后将其传递到隐藏字段.

我遇到的问题是,如果用户键入的名称不正确,则pk将不会重置,并且将保持与上一次搜索相同 - 这意味着当用户单击搜索时,将显示旧数据.

这是我的自动完成服务:

 public string[] GetAutoComplete(string prefixText, int count)
    {

        string connection = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;
        string sql = "SELECT * FROM SageAccount WHERE Name LIKE @prefixText AND Customer = 1 AND SageID IS NOT NULL";
        SqlDataAdapter da = new SqlDataAdapter(sql, connection);
        da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
        DataTable dt = new DataTable();
        da.Fill(dt);
        List Names = new List();
        foreach (DataRow dr in dt.Rows)
        {
            Names.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(dr["Name"].ToString() + " (" + dr["SageID"].ToString() + ")", dr["ID"].ToString()));
        }

        return Names.ToArray();

    }

用于填充隐藏字段的JavaScript是:

function autoCompleteItemSelected(source, eventArgs) {
            var assocHiddenField = document.getElementById(source.get_id() + '_hidden');
            assocHiddenField.value = eventArgs.get_value();
        }

如果没有返回结果,重置隐藏字段的最佳方法是什么?我目前有一个'部分工作'解决方案,这是一点JavaScript:

   function pageLoad() {

    $find('txtName')._onMethodComplete = function(result, context) {


        $find('txtName')._update(context, result, false);
        webservice_callback(result, context);
    };


}
function webservice_callback(result, context) {
    var hiddenfield = document.getElementById('txtName_hidden');
    if (result == "")
        hiddenfield.value = '0';
}

但是,如果用户非常快速地点击进入/点击提交,则不会重置.如果他们没有点击一两秒就可以工作,并将hiddenfield重置为0.

还有其他想法吗?



1> 小智..:

您可以将AJAX自动完成扩展器的OnClientPopulating属性设置为清除隐藏字段的JS.

function ClearHidden(source, eventArgs) {
        document.getElementById('<%=this.hdnUsrIdSel.ClientID%>').value = null;
}

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有