在页面上有好多textbox,命名如下:textbox1,textbox2……textbox100,现在要从数据库里取出一行记录赋值给这些textbox,数据库的字段名也是有规律的,比如:A1,A2……A100,现在想实现循环赋值。顺便问一下,将这些textbox值循环插入数据库有没有什么好的方法!

解决方案 »

  1.   

    循环一百次,在名称上使用字符串处理,比如textbox1为”textbox“+convert.ToString(1),取出的字段A1类似处理
      

  2.   

    插入数据的sql语句values值同样循环拼凑起来即可
      

  3.   


    string sql="select * from Table";
    DataRow dr=db.GetDataRow(sql);
    foreach (Control oControl in this.Controls)
            {
                if (oControl.GetType() == typeof(HtmlForm))
                {
                    foreach (Control item in oControl.Controls)
                    {
                        if (item.GetType() == typeof(TextBox))
                        {
                            string field="A"+((TextBox)Item).ID.SubString(((TextBox)Item)).ID.Length-1);
                            ((TextBox)item).Text=dr[field].ToString()   //得到所有的TextBox,设为只读
                        }
                    }
                }
            }
      

  4.   

    定义一个数组存放textbox1,textbox2等的引用,让后循环处理Dim txtBoxes as Array(100)
    txtBoxes(0)=textbox1
    txtBoxes(1)=textbox2for i as integer = 0 to 100
       txtBoxes(i).Text=dt.rows(0)("A" & (i+1).ToString).ToString
    end for
      

  5.   

    读取时可以循环的,插入要是用存储过程的话,估计参数都要写的累死了。干脆给这个表建个实体。要是用LINQ来实现的话,我想还是好实现的。
      

  6.   

    5楼有部分错误,改动了一下,测试可以通过:
            string sql = "select * from Table";
            DataRow dr = db.GetDataRow(sql);
            foreach (Control oControl in this.Controls)
            {
                if (oControl.GetType() == typeof(HtmlForm))
                {
                    foreach (Control item in oControl.Controls)
                    {
                        if (item.GetType() == typeof(TextBox))
                        {
                            string field = "A" + ((TextBox)item).ID.Substring(((TextBox)item).ID.Length - 1);
                            ((TextBox)item).Text = dr[field].ToString();
                        }
                    }
                }
            }
      

  7.   


    DataTable dt = new DataTable();
                string sql = "...";//查询语句
                string connstr = "...";//数据库连接字符串
                  //赋值
                System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter(sql, connstr);
                sda.Fill(dt);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    ((TextBox)this.Page.FindControl("textbox" + (i + 1))).Text = dt.Rows[0]["A" + (i + 1)].ToString();
                }
                //修改
                System.Data.SqlClient.SqlCommandBuilder scb = new System.Data.SqlClient.SqlCommandBuilder(sda);
                //逆向赋值
                sda.Update();
      

  8.   

    数据检测需要楼主自己解决了,可以try一下
    读出数据后,可以将DataTable存入ViewState中,修改时再将其显示转换为DataTable,然后用循环方法修改每个字段的值,再update
      

  9.   

    请问有什么方法把那么多的textbox的值循环赋值给数据库的字段吗?
      

  10.   

    把上面那个过程反过来不就行了。。
    当然数据的准确性,防呆设计这些东西你可以用正则来控制。。HashTable ht=new HashTable();
    string field=string.Empty;
    foreach (Control oControl in this.Controls)
            {
                if (oControl.GetType() == typeof(HtmlForm))
                {
                    foreach (Control item in oControl.Controls)
                    {
                        if (item.GetType() == typeof(TextBox))
                        {
                            field = "A" + ((TextBox)item).ID.Substring(6,((TextBox)item).ID.Length -7);  //设TextBox的ID为TextBox1
                            //((TextBox)item).Text = dr[field].ToString();
                            //dr[field]=((TextBox)item).Text.ToString();
                            ht.Add(field,((TextBox)item).Text.ToString()); //添加到哈希表中,再去构造SQL函数即可。。
                        }
                    }
                }
      

  11.   

    遍历页面控件,找到textbox,再赋值
    不过这么多textbox的话,应该考虑换其它实现形式了,
      

  12.   


    foreach (System.Web.UI.Control c in Page.Controls)
                {
                    if (c is TextBox)
                    {
                        TextBox t = (TextBox)c;
                        t.Text = "abc";
                    }
                }