C#后台创建控件并获取值的方法

作者:shichen2014 时间:2022-10-20 08:39:46 

本文实例讲述了C#后台创建控件并获取值的方法。分享给大家供大家参考。具体实现方法如下:

前台代码:

<form id="form1" runat="server">
    <div>
        <div class="item">
            Please input a number:
            <asp:TextBox runat="server" CssClass="item" ID="txtTextCount"></asp:TextBox>
          
            <asp:Button runat="server" ID="btnCreate" Text="Create TextBox List" ValidationGroup="CreateTextBox"
                OnClick="btnCreate_Click" />&nbsp;&nbsp;
            <asp:Button runat="server" ID="btnOK" Text="获取控件值" ValidationGroup="ShowListContent"
                OnClick="btnOK_Click" />
        </div>
        <div runat="server" id="divControls" class="item">
        </div>
        <div runat="server" id="divMessage">
        </div>
    </div>
</form>

后台代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack)
        {
            int txtCount = int.Parse(txtTextCount.Text);

            // 注意:每次PostBack时,都需要重新动态创建TextBox
            CreateTextBoxList(txtCount);
        }
    }
    ///<summary> 

    /// Create textbox list
    ///</summary>
    ///<param name="num">textbox list count</param>
    private void CreateTextBoxList(int num)
    {
        HtmlGenericControl div;
        HtmlGenericControl span;
        TextBox txt;
        //RegularExpressionValidator rev;

        for (int i = 0; i < num; i++)
        {
            //创建div
            div = new HtmlGenericControl();
            div.TagName = "div";
            div.ID = "divTextBox" + i.ToString();
            div.Attributes["class"] = "item2";

            //创建span
            span = new HtmlGenericControl();
            span.ID = "spanTextBox" + i.ToString();
            span.InnerHtml = "Url Address" + (i + 1).ToString() + ":";

            //创建TextBox
            txt = new TextBox();
            txt.ID = "txt" + i.ToString();
            txt.CssClass = "input";

            //创建格式验证控件,并且将其关联到对应的TextBox
            //rev = new RegularExpressionValidator();
            //rev.ID = "rev" + i.ToString();
            //rev.ControlToValidate = txt.ID;
            //rev.Display = ValidatorDisplay.Dynamic;
            //rev.ValidationGroup = "ShowListContent";
            //rev.ValidationExpression = @"(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?";
            //rev.ErrorMessage = "Invalid url Address!";

            //添加控件到容器
            div.Controls.Add(span);
            div.Controls.Add(txt);
            //div.Controls.Add(rev);
            divControls.Controls.Add(div);
        }
    }

    protected void btnCreate_Click(object sender, EventArgs e)
    {
        txtTextCount.Enabled = false;
        btnCreate.Enabled = false;
    }

    protected void btnOK_Click(object sender, EventArgs e)
    {
        TextBox txt;
        HtmlGenericControl span;
        StringBuilder sbResult = new StringBuilder();
        int txtCount = int.Parse(txtTextCount.Text);

        //遍历获取动态创建的TextBox们中的Text值
        for (int i = 0; i < txtCount; i++)
        {
            //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容
            txt = divControls.FindControl("txt" + i.ToString()) as TextBox;

            if (txt != null && txt.Text.Trim().Length > 0)
            {
                sbResult.AppendFormat("Url Address{0}: {1}.<br />", i + 1, txt.Text.Trim());
            }
        }
        //遍历获取动态创建的TextBox们中的Text值
        for (int i = 0; i < txtCount; i++)
        {
            //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容
            span = divControls.FindControl("spanTextBox" + i.ToString()) as  HtmlGenericControl ;

            if (span != null && span.InnerText.Trim().Length > 0)
            {
                sbResult.AppendFormat("Url Address{0}: {1}.<br />", i + 1, span.InnerText.Trim());
            }
        }
        divMessage.InnerHtml = sbResult.ToString();
}

希望本文所述对大家的C#程序设计有所帮助。

标签:C#,创建,控件
0
投稿

猜你喜欢

  • SpringMVC RESTFul实体类创建及环境搭建

    2022-12-25 18:23:06
  • unity实现摄像头跟随

    2021-07-26 12:50:10
  • Android中的Looper对象详细介绍

    2023-02-26 08:33:39
  • Java 使用Socket正确读取数据姿势

    2023-09-16 12:13:43
  • C#任务并行Parellel.For和Parallel.ForEach

    2022-04-19 22:07:58
  • C#生成防伪码的思路及源码分享

    2022-10-27 03:53:41
  • Android简易音乐播放器实现代码

    2021-12-22 23:26:53
  • Java中PriorityQueue实现最小堆和最大堆的用法

    2022-03-25 14:32:18
  • spring boot基于Java的容器配置讲解

    2023-11-09 05:24:54
  • Springboot整合FreeMarker的实现示例

    2023-04-09 00:57:57
  • android主线程和子线程之间消息传递详解

    2021-11-06 05:06:23
  • 简单介绍Android开发中的Activity控件的基本概念

    2022-02-23 23:46:21
  • asp.net之生成验证码的方法集锦(一)

    2022-09-07 22:37:13
  • java调用微信现金红包接口的心得与体会总结

    2022-12-22 19:55:12
  • C#抓取网络图片保存到本地的实现方法

    2023-06-28 11:35:13
  • Android 优化之卡顿优化的实现

    2022-03-03 21:34:25
  • C#定义简单的反射工厂实例分析

    2021-08-21 15:16:16
  • C# 鼠标穿透窗体功能的实现方法

    2021-09-26 04:24:38
  • JAVA HashMap详细介绍和示例

    2023-04-07 00:17:43
  • java基于递归算法实现汉诺塔问题实例

    2022-10-22 00:16:14
  • asp之家 软件编程 m.aspxhome.com