2013-04-16 57 views
0

我在頁面上沒有原生的dropdownlist(從dropdownlist擴展)組件。我在裏面插入數據的類構造方法,但現在我每次創建一個新的對象刷新這個數據,我試圖使用JQuery,但它不工作,我不知道如何調用包含DropDownList的擴展裏面的Bind方法,遵循代碼:Reload Extended Drop Down

擴展的DropDownList:

public class XDDLprobabilidadesDeSucesso : XDropDownList 
{ 
    public XDDLprobabilidadesDeSucesso() 
    { 
     this.DataSource = GetDataBind(); 
     this.DataTextField = "text"; 
     this.DataValueField = "id"; 
     this.DataBind(); 
    } 

    private List<DDLBindType> GetDataBind() 
    { 
     List<DDLBindType> l = new List<DDLBindType>(); 
     BLLProbabilidadesSucesso probabilidade = new BLLProbabilidadesSucesso(); 
     List<ProbabilidadesSucesso> probabilidades = probabilidade.Retrieve().ToList(); 

     DDLBindType item = new DDLBindType(); 

     item.id = 0; 
     item.text = "Selecione"; 
     l.Add(item); 

     foreach (ProbabilidadesSucesso prob in probabilidades) 
     { 
      item = new DDLBindType(); 
      item.id = prob.idProbSucesso; 
      item.text = prob.porcentagem.Value.ToString(); 
      l.Add(item); 
     } 

     return l; 
    } 
} 

你可以看到,DataBind已被調用類的構造函數裏面?我如何從Jquery再次調用這個方法? (Obviouslly我創建一個公共的訪問)

任何答案將是有用的。 在此先感謝。

回答

1

嘗試「綁定」客戶端上的asp控件有幾個問題。

  • 第一個問題是,一旦它在客戶端上,它通常是一個 集合的HTML元素。包含 「綁定」數據的元素可能並不明顯,特別是在將綁定 進程屬性添加到元素時。
  • 第二個問題是,你不會有任何控制 生成腳本的客戶端。因此,您所做的任何更改 外觀的任何操作都必須使用腳本手動完成。

因此,要做到這一點,你需要做到以下幾點:

首先弄清楚控制如何呈現。由於這是一個下拉菜單,我假設它呈現爲select,除非它是某種形式的圖像啓用下拉菜單,在這種情況下,這將是非常困難的。

一旦你知道哪裏有「約束」的數據在客戶端上會,弄清楚如何選擇它。一旦你有一個可以可靠地獲取適當元素的選擇器,確保你將能夠銷燬並創建'bound'元素。

也就是說,在select的情況下,確保你可以得到select元素,您可以刪除其中包含的option元素替換它們正是因爲這些信息,這是由服務器「約束」 。

我說做這一切首先是因爲,如果你不打算能夠可靠地重現控制的結構,那麼你不會是能夠「綁定」在客戶端。

一旦你的選擇和方法來重新控制,然後作出webMethod揭露網頁中的信息工作。看一下這個頁面,並確保你在客戶端獲得了從服務器獲取信息以「綁定」的信息。您需要弄清楚服務器是否需要任何參數才能收集正確的信息。

webMethod應的方式,你可以很容易地消化它在客戶端上返回的信息。你可以用數據表或對象列表來做到這一點;任何你可以迭代的東西。

不用擔心序列化或反序列化,ASP會爲你做;這很酷。只要您知道返回的對象的屬性名稱,就可以使用您現在具有的功能。

一旦創建了webMethod,然後在頁面上創建AJAX調用以獲取要綁定的數據。在成功回調ajax調用以收集數據時,您需要呈現新的信息。

您需要清空select,然後使用option元素重新填充返回數據集中每個對象的元素。再次假設下拉呈現爲select元素。

這大致是我在客戶端「捆綁」了一堆gridviews和其他ASP控件,以避免整個頁面回發和刷新。

這並非不可能,但它並不是很容易。