2009-07-09 87 views
0

我得到了一個包含表單的用戶控件。在包含用戶控件的頁面上,當用戶按下按鈕時,我需要在用戶控件中填充表單。ASP.NET用戶控件,數據綁定DataTable

繼承人如何我已經做到了,它不工作:

用戶控制:

public partial class editUC : System.Web.UI.UserControl 
{ 
    public DataTable dataTable { set { UpdateForm(value); } } 

    protected void Page_Load(object sender, EventArgs e) { } 

    private void UpdateForm(DataTable dt) { txtControl.Text = dt.Rows..... ... } 
} 

凡UpdateForm結合不同的文本框中。

和包含UC,當按鈕被點擊的頁面:

EditUserControl.dataTable = dt; 

單擊該按鈕,沒有任何反應。我在這裏錯過了什麼?

在此先感謝。


UPDATE:

我有點接近。這是因爲我正在爲用戶控件使用jQuery對話框。它工作,如果我刪除jQuery。

這是我如何創建對話框:

$(document).ready(function() { 
    var dlg = $('.editFormDialog').dialog({ 
     autoOpen: false, 
     height: 650, 
     width: 550, 
     modal: true, 
     bgiframe: true, 
     title: 'Rediger', 
     open: function(type, data) { 
      $(this).parent().appendTo("form"); 
     } 
    }); 

    dlg.parent().appendTo("form"); 

    $('#btnEdit').live('click', function() { 
     $('.editFormDialog').css('visibility', 'visible'); 
     $('.editFormDialog').dialog('open'); 
    }); 
}); 

我追加到形式,但它不工作。有任何想法嗎?


月2日更新:

它的工作原理,如果我從頁面刪除更新面板。有任何想法嗎? :-)

+0

您爲按鈕添加了單擊事件處理程序嗎? – David 2009-07-09 20:28:33

+0

單擊按鈕時,頁面是否回發到服務器? – tbreffni 2009-07-09 20:28:58

+0

是的。一切都好。在頁面的另一部分使用它:) – 2009-07-09 20:32:22

回答

0
  1. 您使用的控制緩存?如果控件的內容使用ASP.NET控件緩存機制緩存,那麼控件的文本將不會發生變化。

  2. 你可以在私人無效的UpdateForm(DataTable dt)中添加一個斷點來確保當你點擊你的按鈕時調用這個函數嗎?

  3. 根據用戶控件包含的內容,您可能需要執行EditUserControl.DataBind();

  4. 如果您正在發送JavaScript代碼(jquery)作爲更新面板異步回傳的一部分,請務必記住JavaScript不會被瀏覽器評估。您需要找到另一種方法在異步回發之後運行該代碼。

此外,當您在UpdatePanel控件上執行異步回發時,該控件中的所有DOM元素都會被刷新並被新元素替換。 jQuery元素必須重新創建。

0

用戶控制並不意味着像這樣複雜。它們只是簡單地提取一些可重用部分的標記,然後添加一些屬性,方法和事件。他們不打算做數據綁定。你確實應該將tihs控件重寫爲複合服務器控件。

也就是說,通過表現得像真正的服務器控制一樣,您可能會從中獲得最大的吸引力。綁定到數據將發生在DataBinding事件中。在這種情況下,您應該設置網格的DataSource屬性,然後在網格上調用DataBind。