ASP.NET动态生成输入页面,以及生成控件的大小控制,输入数据的验证等

ASP.NET动态生成输入页面,以及生成控件的大小控制,输入数据的验证等

        有时根据选择不同的数据表,要生成不同的输入页面,这些数据表的结构各不相同,这时就要动态输出控件组成输入页面了,把这些表的结构放在一个专门的TYPE表里,如中英文字段名称,类型,大小,中英文表名称等。
        首先在页面上放置一个TABLE控件,放置一个DropDownList控件,DropDownList绑定数据库中要生成输入页面的表名称。
    生成页面代码如下:
cnn.open();
   int cellw;
   string type;
   string Sql =select CHINANAME,HOW,TYPE from Type where OWNER =' + DropDownList1.SelectedValue +';
   OleDbDataAdapter myDa =new OleDbDataAdapter();
   myDa.SelectCommand =new OleDbCommand(Sql,cnn);
   DataSet myDs =new DataSet();
   myDa.Fill(myDs,Type);
   for(int i=0; i<myDs.Tables[0].Rows.Count; i++)

 

{
    TableRow newrow=new TableRow();
    TableCell newcell1=new TableCell();
    TableCell newcell2=new TableCell();
    TableCell newcell3=new TableCell();

 

    Label myLab =new Label();
    myLab.ID = Labe + i.ToString();
    myLab.Text = +myDs.Tables[0].Rows[i].ItemArray.GetValue(0).ToString()+:;
    myLab.EnableViewState =true;
    myLab.Width = 100;

    TextBox myTxt =new TextBox();
    myTxt.ID = Txt + i.ToString();
    myTxt.EnableViewState=true;
    type = myDs.Tables[0].Rows[i].ItemArray.GetValue(2).ToString();

    cellw = int.Parse(myDs.Tables[0].Rows[i].ItemArray.GetValue(1).ToString());
   
    if(cellw<=50)
    {
     myTxt.Height = 24;
     myTxt.Width = 400;
    }
    if(cellw>50&&cellw<=100)
    {
     myTxt.Height = 50;
     myTxt.Width = 400;
     myTxt.TextMode = TextBoxMode.MultiLine;
    }
    if(cellw>100&&cellw<=200)
    {
     myTxt.Height = 60;
     myTxt.Width = 400;
     myTxt.TextMode = TextBoxMode.MultiLine;
    }
    if(cellw>200&&cellw<=500)
    {
     myTxt.Height = 80;
     myTxt.Width = 400;
     myTxt.TextMode = TextBoxMode.MultiLine;
    }

    newcell1.Controls.Add(myLab);
    newrow.Cells.Add(newcell1);
    newcell2.Controls.Add(myTxt);
    newrow.Cells.Add(newcell2);

    if(type==decimal)
    {
     RegularExpressionValidator rev =new RegularExpressionValidator();
     rev.ID = rev + i.ToString();
     rev.ErrorMessage = 本行只能填写数字,请从新输入! ;
     rev.ControlToValidate = Txt+i.ToString()+;
     rev.ValidationExpression = @/d+(/./d+)?$;
     rev.Width = 250;
     newcell3.Controls.Add(rev);
     newrow.Cells.Add(newcell3);
    }

    Table1.Rows.Add(newrow);
   
   }
   myDs.Clear();
   cnn.Close();

   把生成页面输入的数据保存到数据库:
   string strsql =insert into +bm+ (;
   try
   {
    for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
    {
     strsql = strsql + myDs.Tables[0].Rows[i].ItemArray.GetValue(1).ToString() +,;
    }
    strsql = strsql.Substring(0,strsql.Length-1) +) values (;
    for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
    {
     TextBox myTxt = (TextBox)Table1.FindControl(Txt+i.ToString());
     strsql = strsql + ' + myTxt.Text.Replace(','')  + ',;
         }
    strsql = strsql.Substring(0,strsql.Length-1) +);

    OleDbCommand myCommand=new OleDbCommand(strsql,cnn);
    myCommand.ExecuteNonQuery();

   }
   catch
   {


   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值