Сделайте запрос базы данных на Текстовом поле onblur событие

Я использую asp.net 3.5 с C#. Я должен сделать поиск базы данных, когда пользователь вводит ProductID в txtProductID. Я предполагаю, что выполнение JavaScript вне рассмотрения, так как это должно будет быть серверным вызовом. Я написал этот код в page_load событии веб-страницы:

        protected void Page_Load(object sender, EventArgs e)
    {
        txtProductID.Attributes.Add("onblur", "LookupProduct()");
    }

        protected void LookupProduct()
    {
        //Lookup Product information on onBlur event;
    }

Я получаю сообщение об ошибке: ошибка периода выполнения Microsoft JScript: Object ожидал, Как я могу разрешить это?

6
задан user279521 11 March 2010 в 18:47
поделиться

3 ответа

Используйте событие TextBox.TextChanged .

Разметка ASPX:

<asp:TextBox ID="txtProductID" runat="server" AutoPostBack="true" OnTextChanged="txtProductID_TextChanged" />

Скрытый код:

protected void txtProductID_TextChanged(object sender, EventArgs e)
{
   // do your database query here
}
3
ответ дан 10 December 2019 в 02:46
поделиться

Это должно помочь, как указано здесь: http://www.codedigest.com/CodeDigest/80-Calling-a-Serverside-Method-from-JavaScript-in-ASP-Net-AJAX- --PageMethods.aspx

Это элементы управления

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True" />
<asp:TextBox ID="txtTest" onblur="LookupProduct()" runat="server" />

Это Javascript

<script language="javascript">
function LookupProduct()
{  
    PageMethods.LookupProduct('',OnSuccess, OnFailure);
}

function OnSuccess(result) {
    if (result)
    {
    }
}

function OnFailure(error) {
}
</script>

Это веб-метод на стороне сервера

[WebMethod]
public static bool LookupProduct()
{
    return true;
}
1
ответ дан 10 December 2019 в 02:46
поделиться

onblur - событие на стороне клиента. LookupProduct - это метод на стороне сервера. Вы не можете ссылаться на одно из другого - между ними просто нет никакой связи.

Быстрого решения этой проблемы нет - необходимо либо инициировать обратную передачу для клиентского события (используя ClientScriptManager.GetPostBackEventReference ), либо реализовать обратный вызов Ajax с помощью библиотеки, такой как Microsoft ASP.NET Ajax. .

В качестве альтернативы, если вам действительно не нужно запускать это событие при каждом размытии, и только когда текст изменен , вы можете просто использовать серверный TextBox.OnChanged и задайте для свойства TextBox AutoPostBack значение true . Не забудьте установить AutoPostBack , иначе это ни к чему не приведет.

5
ответ дан 10 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: