⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytable.cs

📁 asp.net经典案例资料
💻 CS
字号:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace snowy
{
  public class InvalidEventArgs : EventArgs
  {
    public readonly int Row;
    public readonly int Column;
    
    public InvalidEventArgs(int row, int column)
    {
      Row = row;
      Column = column;
    }
  }

  public class MyTable : Control, INamingContainer
  {
    private Table _table;
    public int Rows
    {
      get{ return (int)ViewState["_rows"]; }
      set{ ViewState["_rows"] = value; }
    }

    public int Columns
    {
      get{ return (int)ViewState["_columns"]; }
      set{ ViewState["_columns"] = value; }
    }

    public delegate void InvalidHandler(object sender, InvalidEventArgs e);
    public event InvalidHandler Invalid;
    public virtual void OnInvalid(InvalidEventArgs arg)
    {
      if(Invalid != null)
        Invalid(this, arg);
    }

    public void OnTextChanged(object sender, EventArgs arg)
    {
      string ID = ((TextBox)sender).ID;
      int position = ID.IndexOf('c');
      int row = int.Parse( ID.Substring(1, position-1));
      int column = int.Parse(ID.Substring(position+1, ID.Length-1-position));

      // Calculate row sum
      int sum = 0;
      for(int x=1; x<=Columns; x++)
      {
        TextBox textbox = (TextBox)_table.Rows[row].Cells[x].Controls[0];
        if(textbox.Text.Trim() != "")
        {
          try
          {
            sum += int.Parse(textbox.Text);
          }
          catch
          {
            OnInvalid(new InvalidEventArgs(row, x));
            return;
          }
        }
      }
      ((TextBox)_table.Rows[row].Cells[Columns+1].Controls[0]).Text = sum.ToString();

      // Calculate column sum
      sum = 0;
      for(int x=1; x<=Rows; x++)
      {
        TextBox textbox = (TextBox)_table.Rows[x].Cells[column].Controls[0];
        if(textbox.Text.Trim() != "")
        {
          try
          {
            sum += int.Parse(textbox.Text);
          }
          catch
          {
            OnInvalid(new InvalidEventArgs(x, column));
            return;
          }
        }
      }
      ((TextBox)_table.Rows[Rows+1].Cells[column].Controls[0]).Text = sum.ToString();
    }

    protected override void CreateChildControls()
    {
      _table = new Table();
      _table.BorderWidth = 2;
      _table.BorderStyle = BorderStyle.Solid;
      _table.GridLines = GridLines.Both;
      Controls.Add(_table);

      TableRow row;
      TableCell cell;

      //Create Headline
      row = new TableRow();
      _table.Rows.Add(row);
      for(int y=0; y<=Columns+1; y++)
      {
        Label label = new Label();
        label.Text = "第" + y.ToString() + "列";
        cell = new TableCell();
        cell.Controls.Add(label);
        row.Cells.Add(cell);
      }
      ((Label)_table.Rows[0].Cells[0].Controls[0]).Text = "标题";
      ((Label)_table.Rows[0].Cells[Columns+1].Controls[0]).Text = "合计";

      for(int x=1; x<=Rows; x++)
      {
        row = new TableRow();
        _table.Rows.Add(row);

        Label label = new Label();
        label.Text = "第" + x.ToString() + "行";
        cell = new TableCell();
        cell.Controls.Add(label);
        row.Cells.Add(cell);

        for(int y=1; y<=Columns+1; y++)
        {
          TextBox textbox = new TextBox();
          textbox.Width = 50;
          textbox.AutoPostBack = true;
          textbox.ID = "r" + x.ToString() + "c" + y.ToString();
          textbox.TextChanged += new EventHandler(OnTextChanged);
          cell = new TableCell();
          cell.Controls.Add(textbox);
          row.Cells.Add(cell);
        }
      }

      row = new TableRow();
      _table.Rows.Add(row);

      Label label2 = new Label();
      label2.Text = "小计";
      cell = new TableCell();
      cell.Controls.Add(label2);
      row.Cells.Add(cell);

      for(int y=1; y<=Columns+1; y++)
      {
        TextBox textbox = new TextBox();
        textbox.Width = 50;
        cell = new TableCell();
        cell.Controls.Add(textbox);
        row.Cells.Add(cell);
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -