2009-10-22 33 views
0

我綁定到下拉列表。它適用於初始負載。在後續加載(回傳)時,它不會刷新下拉菜單中的項目。數據綁定後下拉不呈現

using (DataView dv = dtProductGroup.DefaultView) 
{ 
     dv.ApplyDefaultSort = false; 
     dv.Sort = "KVIGroupName ASC"; 

     ddlGroup.ClearSelection(); 
     ddlGroup.Items.Clear(); 

     string strAll = Localization.GetResourceValue("_strddlStatusLBAll"); 
     ddlGroup.DataValueField = "KVIGroupId"; 
     ddlGroup.DataTextField = "KVIGroupName"; 
     ddlGroup.DataSource = dv; 
     ddlGroup.DataBind(); 

     ListItem item = new ListItem(strAll, "0"); 
     ddlGroup.Items.Insert(0, item); 
} 

我已經確認在回發數據綁定到下拉菜單併成功添加項目。但是當頁面呈現下拉菜單時沒有任何新值。

我看到兩種可能性:控件沒有渲染新值或正在清除值。我不知道在哪裏尋找可能的問題。

編輯

我發現這個問題。下拉列表嵌入在條件UpdatePanel中。只需調用「UpdatePanel.Update();」解決了這個問題。

回答

1

一旦回傳視圖狀態正在重新應用+你說你試圖再次加載值。我建議讓viewstate在回發時承擔所有的重量。只有當頁面第一次加入,如果(!的IsPostBack)喜歡打裝載值,以便

using (DataView dv = dtProductGroup.DefaultView) 
{ 
    if (! IsPostBack) { 

     dv.ApplyDefaultSort = false; 
     dv.Sort = "KVIGroupName ASC"; 

     ddlGroup.ClearSelection(); 
     ddlGroup.Items.Clear(); 

     string strAll = Localization.GetResourceValue("_strddlStatusLBAll"); 
     ddlGroup.DataValueField = "KVIGroupId"; 
     ddlGroup.DataTextField = "KVIGroupName"; 
     ddlGroup.DataSource = dv; 
     ddlGroup.DataBind(); 

     ListItem item = new ListItem(strAll, "0"); 
     ddlGroup.Items.Insert(0, item); 
    } 
} 

編輯: 此外,你的語法確保通過DV引用的數據視圖對象被設置在代碼塊退出時的。我的第二個猜測是這會導致導致問題的副作用。

using (DataView dv = dtProductGroup.DefaultView) 
{ 

而是離開了使用和寫一個正declaratoin像下面(的數據視圖會用一切,當頁面完成渲染的人一起被佈置有沒有真正的任何需要自己做)。

DataView dv = dtProductGroup.DefaultView; 

有關詳細信息,請參閱MSDN documentation about 'using' and IDisposable

+0

+1謝謝你的回答 – 2009-11-03 22:30:35