在ItemTemplate中动态插入UpdatePanel [英] Insert UpdatePanel in ItemTemplate dynamically

查看:82
本文介绍了在ItemTemplate中动态插入UpdatePanel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将下面的示例html代码转换为C#?我已经四处搜索但找不到任何可用的帮助。



how can I convert the sample html code below into C#? I have searched around but could not find any usable help.

<asp:TemplateField HeaderText="ID">

<ItemTemplate>
<asp:UpdatePanel runat="server" ID="UpId" 

UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:TextBox ID="TxtId" runat="server" 

Text="" OnTextChanged="TxtId_TextChanged" 

AutoPostBack="true"></asp:TextBox>
</ContentTemplate>

</asp:UpdatePanel>
</ItemTemplate>

</asp:TemplateField>





到目前为止,我试过这个,但不知道如何将UpdatePanel放入Templatefield。



I have tried this so far, but have no idea how to get the UpdatePanel into Templatefield.

TemplateField tpfield = new TemplateField();
tpfield.HeaderText = "ID"
gv.Columns.Add(tpfield);

UpdatePanel u1 = new UpdatePanel();
TextBox tb1 = new TextBox();
tb1.AutoPostBack = true;
tb1.TextChanged += tb1_TextChanged;

u1.ContentTemplateContainer.Controls.Add(tb1);

推荐答案

你需要创建一个类实现 ITemplate interface [ ^ ]。 InstantiateIn 方法 [ ^ ]将使用容器控件调用,您的类应该在此时添加模板控件。

You need to create a class which implements the ITemplate interface[^]. The InstantiateIn method[^] will be called with the container control, and your class should add the template controls at that point.
sealed class IDFieldTemplate : ITemplate
{
    public EventHandler TextChangedHandler;
    
    public void InstantiateIn(Control container)
    {
        UpdatePanel u1 = new UpdatePanel();
        TextBox tb1 = new TextBox();
        tb1.AutoPostBack = true;
        tb1.TextChanged += TextChangedHandler;
        
        u1.ContentTemplateContainer.Controls.Add(tb1);
        container.Controls.Add(u1);
    }
}
...

IDFieldTemplate template = new IDFieldTemplate();
template.TextChangedHandler += tb1_TextChanged;

TemplateField tpfield = new TemplateField();
tpfield.HeaderText = "ID"
tpfield.ItemTemplate = template;
gv.Columns.Add(tpfield);





注意:如果你需要支持双向数据绑定,您的模板类还需要实现 IBindableTemplate 界面 [ ^ ]。



NB: If you need to support two-way data binding, your template class will also need to implement the IBindableTemplate interface[^].


这篇关于在ItemTemplate中动态插入UpdatePanel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆