设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

使用主题样式创建动态的 ASP.NET服务器控件

2015-1-4 15:34| 发布者: joejoe0332| 查看: 1202| 评论: 0|原作者: daxiang, 白文|来自: oschina

摘要: 这篇文章会向你展示如何添加、动态创建ASP.NET 服务器控件,并把控件添加到html div标签中。 创建你的ASP.NET web应用(工程),并引入你需要的主题(模板)。 按你的要求,创建一个web表单、设计页面布局、创建一个 ...

下载demo - 48.9 KB



简介

  这篇文章会向你展示如何添加、动态创建ASP.NET 服务器控件,并把控件添加到html div标签中。 创建你的ASP.NET web应用(工程),并引入你需要的主题(模板)。 按你的要求,创建一个web表单、设计页面布局、创建一个id为myFormContainer的容器div,并设置div属性server control-runat=”server”。 在这个div中,我们将要动态添加子div、label、textbox、button等控件。


动态创建ASP.NET服务器控件

  所有的控件列表从 Controls json对象(一个 List)中读取。 你可以创建一个 json文件,使用 C# 类反序列化 json对象,轻松地动态创建多个带有必需属性如 id、 text等的控件。 你也可以尝试控制从数据库中读取的列表。


类、方法和事件

第一步:创建基础类

1
2
3
4
5
6
7
8
9
public class Control
{
    public string ID { getset; }
    public string LabelText { getset; }
}
public class ControlList
{
    public List<control> Controls { getset; }
}

第二步:控件列表(从JSON对象或者数据表中获取)

1
2
3
4
5
// create the div to add form elements from a controls list
string json = @"{Controls:[{ID:&apos;UserName&apos;, LabelText:&apos;User Name&apos;},
{ID:&apos;EmailId&apos;, LabelText:&apos;Email Address&apos;},{ID:&apos;Password&apos;, LabelText:&apos;Password&apos;},
{ID:&apos;Phone&apos;, LabelText:&apos;Phone Number&apos;}]}";
var controls = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<controllist>(json);

第三步:创建方法绑定控件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/// <summary>
/// Create & Add Controls to the container div
/// </summary>
/// <param name="controls"></param>
private void CreateControls(ControlList controls)
{
    foreach (var control in controls.Controls)
    {
        //Create Group Container Div
        HtmlGenericControl div = new HtmlGenericControl("div");
        div.Attributes.Add("class""form-group");
        // create label and add to the div          
        div.Controls.Add(new Label() { Text = control.LabelText,
        AssociatedControlID = control.ID, CssClass = "col-md-2 control-label" });
        //create the div to add controls eg. textbox, checkbox etc.
        HtmlGenericControl divInner = new HtmlGenericControl("div");
        divInner.Attributes.Add("class""col-md-10");
        //Create TextBox
        divInner.Controls.Add(new TextBox() { ID = control.ID, CssClass = "form-control" });
        //Create Validator
        divInner.Controls.Add(new RequiredFieldValidator() 
        { ControlToValidate = control.ID, CssClass = "text-danger"
        ErrorMessage = "The user name field is required." });
        div.Controls.Add(divInner);
        Container.Controls.Add(div);
    }
    //create button with event and add to the div
    var button = new Button { ID = "btnClick", Text = "Create" };
    button.Click += btnClick_OnClick;
    Container.Controls.Add(button);
}

第四步:调用CreateControl()方法初始化OnInit事件

1
2
3
4
5
6
7
8
9
10
11
12
13
// <summary>
/// Load Controls on OnInit event
/// </summary>
/// <param name="e"></param>
override protected void OnInit(EventArgs e)
{
    // create the div to add form elements from a controls list
    string json = @"{Controls:[{ID:&apos;UserName&apos;, LabelText:&apos;User Name&apos;},
    {ID:&apos;EmailId&apos;, LabelText:&apos;Email Address&apos;},{ID:&apos;Password&apos;, LabelText:&apos;Password&apos;},
    {ID:&apos;Phone&apos;, LabelText:&apos;Phone Number&apos;}]}";
    var controls = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<controllist>(json);
    CreateControls(controls); // Method with controls list param
}

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部