2009-07-09 84 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。