中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 综合文章
ASP.NET动态生成输入页面,以及生成控件的大小控制,输入数据的验证等
作者:未知 时间:2004-10-19 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

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
   {


   }

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有