我想在Asp.net中使用GridView创建'times table(2x2 = 4)'表

时间:2017-08-17 05:00:00

标签: c# asp.net arrays gridview datarow

  1. 我想创建一个9x9 GridView,在列和行中列出数字1到9,然后将值放入数组中。 我想用for和Array创建它,但我不知道该怎么做。

  2. 当前状态是该值显示在列下方,所有值仅显示在一行上。

  3. 我想完成一个程序并提供帮助。

    ASPX。

    <asp:GridView ID="GridView1" runat="server">
    <Columns></Columns>
    

    aspx.cs。

    public partial class GridEX : System.Web.UI.Page{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dt = new DataTable();
    
            int i = 1;
            if (!Page.IsPostBack)
            {
                for (; i <= 9; i++)
                {
                    dt.Columns.Add(i + "단");
                }
    
                for (int k = 1; k <= 9; k++)
                {
                    DataRow dr = dt.NewRow();
                    for (int m = 1; m <= 9; m++)
                    { dr[m] = i; }
    
                    dt.Rows.Add(dr);
                    dt.Rows.Add(i * k);
                }
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
    }
    }
    

    我想要的形象:

    enter image description here

3 个答案:

答案 0 :(得分:0)

DataTable dt = new DataTable();
dt.Columns.Add("Factor1");
dt.Columns.Add("Factor2");
dt.Columns.Add("Result");

for(int i=2; i<=9; i++)
{
  for (int j=1; j<=10; j++)
  {
    dt.Rows.Add(i, j, i*j);
  }
}

GridView1.DataSource = dt;
GridView1.DataBind();

答案 1 :(得分:0)

您可能有理由想在这里使用Gridview,但在我看来,这不是实现目标的正确方法。 DataBinding是一个有用的工具,但它确实带来了处理开销,至少它是另一个迭代。

您可以使用DataTable来实现相同的功能而无需绑定开销。

<强> ASPX

<asp:Table ID="MulitiplicationTable" runat="server"></asp:Table>

<强> C#

for(int row = 0; row < 10; row++)
{
    TableRow newRow = new TableRow();
    MulitiplicationTable.Rows.Add(newRow);

    for (int column = 0; column < 10; column++)
    {
        TableCell newCell = new TableCell();
        newRow.Cells.Add(newCell);
        //Empty cell for our first cell...                    
        if ((row + column) == 0)
        {
            newCell.Text = "&nbsp;";
        }
        //Our Column and row headers are also
        //Special Cases
        else if(row == 0)
        {
            newCell.Text = column.ToString();
            newCell.CssClass = "columnHead";
        }
        else if(column == 0)
        {
            newCell.Text = row.ToString();
            newCell.CssClass = "rowHead";
        }
        //Now do the math
        else
        {
            newCell.Text = (row * column).ToString();
        }
    }
}

答案 2 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable table9x9 = new DataTable();
        if (table9x9.Columns.Count == 0)
        {
            for (int i = 0; i < 10; i++)
            {
                if (i == 0)
                    table9x9.Columns.Add(" ");
                else
                    table9x9.Columns.Add(i+"");
            }
        }
        for (int row = 1; row <= 9; row++)
        {
            DataRow dr = table9x9.NewRow();
            for (int column = 0; column <= 9; column++)
            {
                if (column == 0)
                    dr[" "] = row;
                else
                    dr[column + ""] = row * column;
            }
            table9x9.Rows.Add(dr);
        }
        GridView2.DataSource = table9x9;
        GridView2.DataBind();
    }
}

输出:

enter image description here