2009-07-09 8 views
5

sonra yanıt vermiyor. İşte yaşadığım şey:ASP.NET jQuery Otomatik Tamamlama - metin kutusu Şimdiye kadar bu sitede diğer sorularda aynı sorunu bulamıyorum ilk aramada

Bir ASP.NET WebForms uygulamasında, bir jQuery otomatik tamamlama için kullandığım bir ASP: TextBox'ım bulunan bir arama alanı içeren bir UpdatePanel uygulaması var.

$(document).ready(function() { 
    $("#tabContainer_tabSearchBreaks_txtSearchName").autocomplete("AutoCompleteEmployee.ashx", { minChars: 3, maxItemsToShow: 10 }); 
}); 

Bütün bu olanlar iyi çalışır, ancak bir ASP tıklarsanız: Düğme ve arama alanı için bazı kodlar, otomatik tamamlama javascript artık işler işlemek.

Herhangi bir fikir ???

js kodu aramak için metin kutusu sıfırlamak için bir çözüm olmalı var.

[Güncelleme - Daha Kodu] Burada güncelleme düğmesi otomatik tamamlama kodundan ayrı olan arama alanı için yaptığı şey:

try { 
    int employeeID; 
    string[] namelst = txtSearchName.Text.Split(new string[] { 
     " " 
    }, StringSplitOptions.None); 
    employeeID = int.Parse(namelst[2].Substring(1, namelst[2].Length - 2)); 
    string name = namelst[0] + " " + namelst[1]; 
    var breaks = bh.ListBreaksForEmployeeByDate(employeeID, DateTime.Parse(txtFromDate.Text), txtToDate.Text.Length > 0 ? DateTime.Parse(txtToDate.Text).AddDays(1).AddSeconds(-1) : DateTime.Today.AddDays(1).AddSeconds(-1)); 

    if (breaks.Count() > 0) { 
     lblEmployeeTitle.Text = "Breaks for " + name; 
     gridSearchBreaks.DataSource = breaks; 
     gridSearchBreaks.DataBind(); 
    } 
} catch {} 

Umut bu yardımcı olur. Şu anda bu sorunu içeren sekmeyi kullanıcılardan gizledim.

+0

"Arama alanı için bazı kodları işlemek"? pls ayrıntılı. – Colin

cevap

10

Sana ASP.NET UpdatePanel kontrolleri ve jQuery ile klasik bir sorun yaşadığımız düşünüyorum. Sorun şu şekildedir: jQuery kodu (sizin durumunuzda otomatik tamamlamadır, ancak herhangi bir şey olabilir) sayfa yüklemesinde iyi çalışır, ancak kısmi bir geri gönderme sonrasında çalışmayı durdurur. Bu durumda, jQuery'yi UpdatePanel denetimleriyle kullanma konusunda anlamanız gereken birkaç şey vardır.

Birincisi, $ (document) tanımlanan tüm etkinlik bağlamaları ilk kısmi postback sonra çalışmamaya .ready (ve düğme tıklama kısmi geri gönderme neden olduğunu varsayalım). Bu, ASP.NET'in çalıştığı yoldur. Peki nasıl tamir ediyorsun? Eh, bu sorunu çözmek için çeşitli yollar vardır. Tipik bir öneri, ASP.NET AJAX'ın kendi pageLoad olayı ile birlikte $ (document). Bu, bir sorunu çözebilir, ancak büyük olasılıkla daha fazla soruna neden olacaktır, çünkü artık tek bir olayda olay işleyicilerinin sürekli olarak çalıştırılmasına neden olan her kısmi geri gönderimdeki etkinlikleri bağlayacaksınız. Herhangi bir bağlama yapmadan önce, seçiciniz için desteğini açarak arayarak bazı sorunları giderebilirsiniz. Basit olay bağlamaları için, canlı işlevini kullanarak (tıklama, gezinme, vb. Yerine) $ (document) .ready kullanmaya devam edebilirsiniz.

jQuery eklentilerini UpdatePanel ile kullanmıyorum, bu yüzden ne yapmanız gerektiğini kesin olarak söyleyemem, ama ne olduğunu anladıktan sonra, doğru yaklaşımı bulmak zor olmamalı. Bu sorun ve olası çözümler hakkında daha fazla bilgi edinmek için lütfen Dave Ward'un makalesini okuyun. $(document).ready() and pageLoad() are not the same! (makale birkaç örnek içerir).

1

Sana hata oluşur nerede belirlemekte hangi kullanarak, Firebug gibi bir araç kullanmanızı öneririz. Ajax isteklerini, istekleri gerçekten durdurup durdurmadığını, tüm yol boyunca devam edip etmediğini ve hangi yanıtı aldığınızı görmek için izleyebilirsiniz. Ayrıca, çalışma zamanında javascript hatalarını ayıklamak için de kullanabilirsiniz ve genellikle, aksi halde fark etmediğiniz hata iletileri verir. Şu anda ihtiyaç duyduğunuz araç gibi görünüyor.

+0

Kesinlikle Firebug'ı deneyeceğim ve ne elde ettiğimi göreceğim. Teşekkürler. – kntcnrg

İlgili konular