2016-03-29 17 views
0

Veritabanındaki verileri kullanarak açılan açılır listeyi yerleştirmeye çalıştığım basit bir kullanıcı arayüzüne sahibim. Verileri almak için bunu AJAX çağrısı ile yapıyorum.JQuery kullanarak ASP.NET ajax çağrı listesine ekler

private static List<List<string>> componentTypeDropDown = new List<List<String>>(); 

private void loadDropDownList() 
{ 
    OleDbConnection conn = new OleDbConnection(connectionString); 
    OleDbCommand cmd = new OleDbCommand("SELECT FieldName,FieldLabel FROM dropDownFields", conn); 
    conn.Open(); 
    OleDbDataReader dr = cmd.ExecuteReader(); 
    while (dr.Read()) 
    { 
     List<String> temp = new List<string>(); 
     temp.Add((string)dr.GetValue(0)); 
     temp.Add((string)dr.GetValue(1)); 
     componentTypeDropDown.Add(temp); 
     conn.Close(); 
    } 
} 

[WebMethod] 
public static ArrayList getComponentType() 
{ 
    ArrayList compType = new ArrayList(); 
    for (int i=0;i<componentTypeDropDown.Count();i++) 
    { 
     compType.Add(new { label = componentTypeDropDown[i][0], value = componentTypeDropDown[i][1] }); 
    } 
    return compType; 
} 

AJAX çağrı

$.ajax({ 
    type: "POST", 
    url: "salesQuote.aspx/getComponentType", 
    data: "", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
      console.log("karan"); 
    }, 
    error: function() {     
      alert("Failed to load names"); 
    } 
}); 

Her ben yenilemek ve hatta sunucusunu başarı geri aramasında msg değerini yeniden zamanı yanı önceki değerlere sahip benziyor gibi

C# web yöntemi görünüyor . Örneğin, veritabanımın 1,2 değerine sahip olduğunu söyleyebiliriz. Ajax msg olarak adlandırdığım ilk kez 1,2 değeri 1,2 ise 1,2,2,2 olur. Sunucuyu kapatıp yeniden başladığımda, değer 1,2,1,2,1,2

+0

yöntemini çağırın 'ben bir şekilde bu yöntem çağrıldığını birden çok kez şüpheli pageLoad – wonderbell

+0

loadDropDownList'. Gerçek kod kurulumunu bilmeden emin olamazsınız. Hayır saymayı deneyebilirsiniz. Bir breakpoint tutarak 'loadDropDownList' yöntemine çağrıları. – user3342812

+0

içinde – wonderbell

cevap

0

Olduğunda, ComponentTypeDropdown bir statiktir, bu nedenle 'LoadDropdownList' adını her aradığınızda bu liste yeni öğeler ekleyecektir. eskileri kaldırmak.

Sana loadDropDownList yönteminde çizgisini takip ekleyin öneririm: öyle mi

private void loadDropDownList() 
    { 
     componentTypeDropdown.RemoveAll(); 
     OleDbConnection conn = new OleDbConnection(connectionString); 
     OleDbCommand cmd = new OleDbCommand("SELECT FieldName,FieldLabel FROM dropDownFields", conn); 
     conn.Open(); 
     OleDbDataReader dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
      List<String> temp = new List<string>(); 
      temp.Add((string)dr.GetValue(0)); 
      temp.Add((string)dr.GetValue(1)); 
      componentTypeDropDown.Add(temp); 
      conn.Close(); 
     } 
    } 
İlgili konular