zoukankan      html  css  js  c++  java
  • asp.net下动态生成不规则表格

        事件背景:

            当我在做一个公司的绩效考核系统时,发现了一个问题,那就是怎样动态生成一个不规则表格的问题,在网上找了很多,却不是很尽人意。于是自己就做了一个,希望对大家有点儿启发,首先声明做的可能不是太好,请内行人不要见笑哦!

            需要生成的表格如下:

    这其中的工作能力和工作态度中的项可能会根据部门的不同而发生变化,可能变的多一个或者是少一个,所以这样就不能用asp.net 中的DataGrid来做了,我想的办法是用Table 对象来动态生成这个表格 ,首先建一个mytable.cs类,代码如下:

    using System;
    using System.Data;
    using System.Configuration;
    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;

    /// <summary>
    /// mytable 的摘要说明
    /// </summary>
    public class mytable
    {
          private String[] t1;
          private String[] t2;
          private int a,b;

        
          public mytable()
          {
           
          }

          public mytable(String [] t1,String [] t2)
    {
              this.t1 = t1;
              this.t2 = t2;
              this.a = t1.Length;
              this.b = t2.Length;
    }

          public string[] T1//获取工作能力的参数数组
          {
              get
              {
                  return this.t1;
                
              }
              set
              {
                  this.t1 = value;
                  this.a = value.Length;
              }
          }
          public string[] T2//获取工作态度的参数数组
          {
              get
              {
                  return this.t2;
              }
              set
              {
                  this.t2 = value;
                  this.b = value.Length;
              }
          }

          public Table Cretable()//    生成Table的方法
          {

              Table tb2 = new Table();
              TableRow row1 = new TableRow();
              TableCell td1 = new TableCell();
              td1.Width = 84; td1.RowSpan = 2;
              td1.Text = "姓名";
              td1.Attributes.Add("align", "center");
              row1.Cells.Add(td1);

              TableCell td2 = new TableCell();
              tb2.Attributes.Add("width", "100"); td2.Height = 64; td2.Text = "工作业绩70分";
              td2.Attributes.Add("align", "center");
              row1.Cells.Add(td2);

              TableCell td3 = new TableCell();
              td3.ColumnSpan = a;
              td3.Text = "工作能力10分";
              td3.Attributes.Add("align", "center");
              row1.Cells.Add(td3);

              TableCell td4 = new TableCell();
              td4.ColumnSpan = b;
              td4.Text = "工作态度20分";
              td4.Attributes.Add("align", "center");
              row1.Cells.Add(td4);

              TableCell td5 = new TableCell();
              td5.Text = "总分";
              row1.Cells.Add(td5);

              tb2.Rows.Add(row1);

              TableRow row2 = new TableRow();

              TableCell tdd1 = new TableCell();

              row2.Cells.Add(tdd1);

              for (int i = 0; i < a; i++)
              {
                  TableCell tdd2 = new TableCell();
                  tdd2.Text = t1[i].ToString();
                  tdd2.Width = 25;
                  tdd2.Attributes.Add("align", "center");
                  row2.Cells.Add(tdd2);
              }

              for (int i = 0; i < b; i++)
              {
                  TableCell tdd2 = new TableCell();
                  tdd2.Text = t2[i].ToString();
                  tdd2.Width = 25;
                  tdd2.Attributes.Add("align", "center");
                  row2.Cells.Add(tdd2);
              }

              tb2.Rows.Add(row2);

              int t = 0;
              for (int i = 0; i < 6; i++)
              {
                  char Sign = 'a';
               
                  TextBox box = new TextBox();
                  box.ID = "box" + i.ToString();
                  box.Width = 80;
                  //box.Text = "box" + i.ToString();
                  box.Attributes.Add("runat", "server");
                
                  TableRow rows = new TableRow();
                  TableCell tdd = new TableCell();
                  tdd.Controls.Add(box);
                  tdd.Width = 90;
                  tdd.Attributes.Add("align", "center");
                  rows.Cells.Add(tdd);

                  TextBox box2 = new TextBox();
                  box2.ID = "dd" + i.ToString();
                  box2.Width = 100;
                  //box2.Text = "dd" + i.ToString();

                  TableCell tdd3 = new TableCell();
                  tdd3.Controls.Add(box2);
                  tdd3.Width = 120;
                  tdd3.Attributes.Add("align", "center");
                  rows.Cells.Add(tdd3);

                  for (int j = 0; j < a + b + 1; j++)
                  {

                    
                      if (j == a - 2)
                      {
                          TextBox b1 = new TextBox();
                          b1.ID = Sign.ToString() + t.ToString();
                          b1.Width = 27;
                         // b1.Text = Sign.ToString() + t.ToString();
                          b1.Attributes.Add("runat", "server");
                          b1.Attributes.Add("onblur", "sum1("+j+"," + t + ")");
                          TableCell bb = new TableCell();
                          bb.Controls.Add(b1);
                          bb.Attributes.Add("align", "center");
                          rows.Cells.Add(bb);
                      }
                      else if (j == a + b - 2)
                      {
                          TextBox b1 = new TextBox();
                          b1.ID = Sign.ToString() + t.ToString();
                          b1.Width = 27;
                         //b1.Text = Sign.ToString() + t.ToString();
                          b1.Attributes.Add("runat", "server");
                          b1.Attributes.Add("onblur", "sum2("+(j-a+2)+"," + t + ")");
                          TableCell bb = new TableCell();
                          bb.Controls.Add(b1);
                          bb.Attributes.Add("align", "center");
                          rows.Cells.Add(bb);
                      }
                      else if (j == a + b-1)
                      {
                          TextBox b1 = new TextBox();
                          b1.ID = Sign.ToString() + t.ToString();
                          b1.Width = 27;
                          //b1.Text = Sign.ToString() + t.ToString();
                          b1.Attributes.Add("runat", "server");
                          b1.Attributes.Add("onblur", "sum3(" + t + ")");
                          TableCell bb = new TableCell();
                          bb.Controls.Add(b1);
                          bb.Attributes.Add("align", "center");
                          rows.Cells.Add(bb);
                      }
                      else
                      {
                          TextBox b1 = new TextBox();
                          b1.ID = Sign.ToString() + t.ToString();
                          b1.Width = 27;
                          b1.Attributes.Add("runat", "server");
                          //b1.Text = Sign.ToString() + t.ToString();
                          TableCell bb = new TableCell();
                          bb.Controls.Add(b1);
                          bb.Attributes.Add("align", "center");
                          rows.Cells.Add(bb);
                      }

                      Sign++;
                    
                  }
                  t++;
                  tb2.Rows.Add(rows);
               

              }

              tb2.Attributes.Add("border", "1");
              tb2.Attributes.Add("bordercolor", "#93bee2");
              tb2.Attributes.Add("cellspacing", "0");
              tb2.Attributes.Add("width", "100%");
              return tb2;
        
          }
       
    }

          新建一个test2.aspx页面用来测试该类:

    在该页面上放入一个panel , Id为panel1的控件用来放生成的Table

        test2.aspx.cs主要代码如下:

    protected void Page_Load(object sender, EventArgs e)
          {
              Table tb1 = new Table();

             String[] t1 ={ "专业知识", "计划能力", "执行能力", "表达能力", "解决问题能力", "创新能力", "合计" };
              String[] t2 ={ "责任感", "忠诚度", "服从精神", "团队精神", "主动性", "纪律性", "合计" };
              mytable table = new mytable();
              table.T1 = t1;
              table.T2 = t2;
              tb1 = table.Cretable();
              this.Panel1.Controls.Add(tb1);

          }

    这样就可能根据你传入的数组来动态生成表格,而且下面的每一个单元格中我也给放了一个TextBox控件,这样可以方便地添加数据了。

    表格还不太好看,大家用的时候可以在mytable.cs中美化一下。

    目前我就想到了这一个方法,希望对大家有所启发,如果大家还有更好的办法,请联系我

  • 相关阅读:
    iOS开发实用技术之MapKit框架的使用
    iOS开发实用技术之CoreLocation框架
    iOS开发UI之KVC(取值/赋值)
    iOS开发UI之自定义View
    iOS开发UI之UIButton的基本使用
    iOS开发UI之UIImageView的基本使用
    iOS开发UI之 UILabel的基本使用
    iOS开发UI之UILabel的基本使用
    tensorflow 梯度下降以及summary
    leetcode_38
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1709685.html
Copyright © 2011-2022 走看看