首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

在局部刷新时,动态创建多个TextBox后,怎么保存TextBox的Text属性的值

2014-01-17 
在局部刷新时,动态创建多个TextBox后,如何保存TextBox的Text属性的值?大家好,请教一个问题:在局部刷新时,

在局部刷新时,动态创建多个TextBox后,如何保存TextBox的Text属性的值?
大家好,请教一个问题:
     在局部刷新时,动态创建多个TextBox后,如何保存TextBox的Text属性的值?
[解决办法]
给你写了一个例子:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestAddText.aspx.cs" Inherits="TestAddText" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="插入Txt" />
        &nbsp;
        <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="选择最大" />
        &nbsp;
        <asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="删除最大" />
        <hr />
        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        <hr />
        <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="回发测试" />
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web.UI.WebControls;

public partial class TestAddText : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.PlaceHolder1.Controls.Clear();
        foreach (var id in IDs)
        {
            var txt = new TextBox { ID = id };
            this.PlaceHolder1.Controls.Add(txt);
            txt.TextChanged += txt_TextChanged;
        }
    }

    void txt_TextChanged(object sender, EventArgs e)
    {
        var txt = (TextBox)sender;
        ClientScript.RegisterStartupScript(this.GetType(), "txt_改变",
            "alert('修改了" + txt.ID + "');", true);
    }

    private Color[] cs = new Color[] { Color.Black, Color.Blue, Color.Green, Color.Gold };

    /// <summary>
    /// 插入新的textbox
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button1_Click(object sender, EventArgs e)
    {
        var id = Guid.NewGuid().ToString("n");
        var txt = new TextBox
        {
            ID = id,
            Text = new Random().Next(1, 100).ToString(),
            Width = new Unit(20),
            ForeColor = cs[new Random().Next(cs.Length)]
        };
        this.PlaceHolder1.Controls.Add(txt);
        IDs.Add(id);


        ClientScript.RegisterStartupScript(this.GetType(), "Button_Click haha",
            "alert('增加了" + txt.ID + "');", true);
        txt.Attributes["初始化颜色"] = txt.ForeColor.ToArgb().ToString();
    }

    private List<string> IDs
    {
        get
        {
            var ret = (List<string>)ViewState["ids"];
            if (ret == null)
            {
                ret = new List<string>();
                ViewState["ids"] = ret;
            }
            return ret;
        }
    }

    private string SelectedID
    {
        get
        {
            return (string)ViewState["st"];
        }
        set
        {
            ViewState["st"] = value;
        }
    }

    /// <summary>
    /// 随便回发一下,什么也不干
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button2_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "Button2_Click",
            "alert('hi');", true);
    }

    private uint GetValue(TextBox ctrl)
    {
        uint x;
        if (uint.TryParse(ctrl.Text, out x))
            return x;
        else
            return 0;
    }

    private TextBox 最大txt()
    {
        var lst = (from id in IDs
                   let tb = (TextBox)this.form1.FindControl(id)
                   let value = GetValue(tb)
                   where value > 0
                   select new { txt = tb, value }).ToList();
        return lst.Aggregate((x, y) =>
        {
            if (GetValue(x.txt) > GetValue(y.txt))
                return x;
            else
                return y;
        }).txt;
    }

    //选择新的最大值
    protected void Button3_Click(object sender, EventArgs e)
    {
        if (IDs.Count == 0)
            return;

        var sid = SelectedID;
        if (sid != null)
        {
            var txt = (TextBox)this.PlaceHolder1.FindControl(sid);
            if (txt != null)
            {
                txt.ForeColor = Color.FromArgb(int.Parse(txt.Attributes["初始化颜色"]));


                txt.Style.Remove("font-size");
            }
        }
        var mt = 最大txt();
        mt.ForeColor = Color.Red;
        mt.Style["font-size"] = "2cm";
        SelectedID = mt.ID;
    }

    //移除最大值
    protected void Button4_Click(object sender, EventArgs e)
    {
        if (IDs.Count == 0)
            return;

        var mt = 最大txt();
        IDs.Remove(mt.ID);
        this.PlaceHolder1.Controls.Remove(mt);
    }
}

热点排行