//dataList的绑定事件
    protected void dataBind(int num) {
        ArrayList al = new ArrayList();
        for (int i = 0; i < num; i++)
{
 TextBox tb = new TextBox();
             tb.ID="txt"+i;
             tb.Width = 7;
             al.Add(tb);
}            this.DataList1.DataSource = al;
            this.DataList1.DataBind();
        
    }
    //保存文本框中的数据
    protected void Button1_Click(object sender, EventArgs e)
    {
        ArrayList arrayList = new ArrayList();
        for (int i = 0; i < DataList1.Items.Count; i++)
        {
            TextBox texbox = (TextBox)this.DataList1.Items[i].FindControl("txt"+i);
            if (texbox!=null)
            {                
                string txtText = texbox.Text;
                arrayList.Add(txtText);
            }
        }
        this.DataList1.DataSource = arrayList;
        this.DataList1.DataBind();
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        int num=int.Parse(this.TextBox1.Text.ToString());
        dataBind(num);
    }
===============================================================
我是根据用户输入的个数显示文本框的个数,文本框我显示出来了 ,我想获取所以文本框的值,
再保存到session里面,但不知道为什么就是获取不到那个文本框控件,
哪位大侠帮偶看下,本人感激不尽!

解决方案 »

  1.   

    看不懂你的用意,不过,动态绑定,你得保证每次请求都能执行,你这里的 dataBind(int num) 方法,不能只在 protected void Button2_Click(object sender, EventArgs e)   被执行
      

  2.   

    protected void BindToDataList()
        {
            uid = Request.QueryString["uid"].ToString();
            if (uid == "")
            {
                ShowMessages.Box("参数错误!");
                return;
            }
            SqlConnection conn = DBConn.conn();
            SqlDataAdapter per = new SqlDataAdapter();
            DataSet ds = new DataSet();
            try
            {
                per.SelectCommand = new SqlCommand("select * from cdb_members where uid = '" + uid + "'", conn);
                per.Fill(ds, "cdb_members");
                this.DataList1.DataSource = ds.Tables["cdb_members"];
                this.DataList1.DataBind();
                
            }
            catch(SqlException ex)
            {
            Response.Write(ex.Errors.ToString());
            }
            finally
            {
                conn.Close();
                per.Dispose();
                ds.Dispose();
               
            }
      

  3.   

    public static void ClearTextBox(System.Web.UI.ControlCollection controls)
    {
    foreach (System.Web.UI.Control control in controls)
    {
    if (control.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
    {

    }
    }
    }
      

  4.   

    我的用意是根据用户输入的个数显示相应的文本框,用户在文本框内填写数据,在把数据用个session之类的东西保存起来,再把session中的数据随机显示出来,再把显示的结果打印出来!
    我现在文本框都显示了,就是不知道怎么获取那个文本框啊 !
      

  5.   

    搞 不明白你的意图,,1.根据Num来给datalist绑定,,,你只是绑定了文本框,并没有赋值 ,,,2.Button1_Click()这个方法能取到值吗????这样根本取不到吧请楼主把事情描述清楚
      

  6.   

    我知道这样绑定有bug,性能有影响!但是客户输入的文本框的个数不是很多,如果有成千上万个文本框,他不是输死啊! 呵呵 ! 我会为显示的个数做判断的,最多显示的几百个了不起了 !
      

  7.   


    我绑定文本框之后,再在里面赋值,再点击button1 的click事件获取值的啊 buttion2是用来
    绑定文本框的!TextBox texbox = (TextBox)this.DataList1.Items[i].FindControl("txt"+i); 
    我调试过  texbox  为null  不知道为什么?
      

  8.   

    后台using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;public partial class RightFrame : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            int num = int.Parse(this.TextBox1.Text.ToString());
            string[] list = new string[num];
            this.DataList1.DataSource = list;
            DataList1.DataBind();
        }    protected void Button2_Click(object sender, EventArgs e)
        {
            string result = "";
            for (int i = 0; i < DataList1.Items.Count; i++)
            {
                Control control = DataList1.Items[i].FindControl("TextBox2");
                if (control is TextBox)
                {
                    TextBox txt = (TextBox)control;
                    result += " " + txt.Text;
                }
            }
            Session["result"] = result;
        }
    }前台<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MainFrame.aspx.cs" Inherits="RightFrame" %><%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server">
                <ItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                </ItemTemplate>
            </asp:DataList>&nbsp;</div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
        </form>
    </body>
    </html>
      

  9.   

    textbox 获取出来的怎么为空呢,