根据输入的列和行显示gridview

时间:2015-11-20 12:04:04

标签: c# asp.net gridview

我有两个文本框,用户可以在其中输入No of RowsNo of Columns。 缩写为"A-Z"

的一个下拉列表

因此,如果用户输入

第一个文本框--- 5

第二个文本框--- 5

并选择abbr为“A-Z”

因此在gridview中它应显示为

Gridview display

任何想法都会建议如何开始。

1 个答案:

答案 0 :(得分:1)

您可以使用DataTable作为DataSource并以这种方式填写:

protected void btnDisplay_Click(object sender, EventArgs e)
{
    // use CompareValidators for the two TextBoxes for rows and columns
    // with it's Operator property set to DataTypeCheck and Type="Integer"
    int rows = int.Parse(txtNoOfRowsRC.Text);
    int columns = int.Parse(txtNoOfColRC.Text);

    grdBinDefinitionDisplay.DataSource = GetDataSource(rows, columns);
    grdBinDefinitionDisplay.DataBind();
}

protected DataTable GetDataSource(int rows, int columns)
{
    DataTable table = new DataTable();
    for (int c = 1; c <= columns; c++)
        table.Columns.Add("Column " + c.ToString());

    for (int r = 1; r <= rows; r++)
    {
        DataRow row = table.Rows.Add();
        foreach (DataColumn col in table.Columns)
        {
            string value = string.Format("{0}{1}{2}", IntToLetters(r), r, col.Ordinal + 1);
            row.SetField(col, value);
        }
    }
    return table;
}

我使用此方法为行号生成字母(奖励here):

public static string IntToLetters(int value)
{
    string result = string.Empty;
    while (--value >= 0)
    {
        result = (char)('A' + value % 26) + result;
        value /= 26;
    }
    return result;
}

这处理缩写为“A-Z”的情况,你没有提到任何其他。