带数据列的动态gridview

时间:2014-11-15 07:13:31

标签: c# asp.net gridview

我正在使用gridview控件 我必须插入gridview列动态我插入像

这样的行值

我必须插入gridview列动态我插入像

这样的行值
string[,] mularray = {
                      {"F_1","F_2","F_3","F_4","F_5","F_6"}
                     };

foreach (string names in mularray)
{
    for (int i = 0; i < 1; i++)
    {                   
        dt.Rows[dt.Rows.Count - 1]["10:00-11:00"] = mularray[i, 0];
        dt.Rows[dt.Rows.Count - 1]["11:00-12:00"] = mularray[i, 1];
        dt.Rows[dt.Rows.Count - 1]["12:00-01:00"] = mularray[i, 2]; 
        dt.Rows[dt.Rows.Count - 1]["02:00-03:00"] = mularray[i, 3];
        dt.Rows[dt.Rows.Count - 1]["03:00-04:00"] = mularray[i, 4];
        dt.Rows[dt.Rows.Count - 1]["04:00-05:00"] = mularray[i, 5];     
    }   
}

当我使用它但它插入最后一行时,如图中所示

下一行的值应该像F-2,F-3,F_4,F_5,F_6,F_1那样增加,然后像这样做

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你应该能够做到如下简单的事情:

string[,] mularray =
{
    {"F_1","F_2","F_3","F_4","F_5","F_6"},
    {"F_2","F_3","F_4","F_5","F_6","F_1"},
    {"F_3","F_4","F_5","F_6","F_1","F_2"},
    {"F_4","F_5","F_6","F_1","F_2","F_3"},
    {"F_5","F_6","F_1","F_2","F_3","F_4"},
    {"F_6","F_1","F_2","F_3","F_4","F_5"}
};

for (int i = 0; i < mularray.GetLength(0); i++)
{
    for (int j = 0; j < mularray.GetLength(1); j++)
    {
        dt.Rows[i]["10:00-11:00"] = mularray[j, 0];
        dt.Rows[i]["11:00-12:00"] = mularray[j, 1];
        dt.Rows[i]["12:00-01:00"] = mularray[j, 2];
        dt.Rows[i]["02:00-03:00"] = mularray[j, 3];
        dt.Rows[i]["03:00-04:00"] = mularray[j, 4];
        dt.Rows[i]["04:00-05:00"] = mularray[j, 5];
    }
}

这会在两个维度中迭代mularray。它将mularray(由迭代器i定义)的每一行分配给DataTable dt。它使用原始循环(使用迭代器j重新定义),为当前行中的每个单元格分配值。

同样,如果您只是尝试输入单行并在每次迭代期间自动向右移动元素,则可以简化此操作。您可以使用模运算符(%)来使元素循环,并使用偏移量来选择正确的值。

string[] mularray = { "F_1", "F_2", "F_3", "F_4", "F_5", "F_6" };

for (int i = 0; i < 6; i++)
{
        dt.Rows[i]["10:00-11:00"] = mularray[i];
        dt.Rows[i]["11:00-12:00"] = mularray[(i + 1) % 6];
        dt.Rows[i]["12:00-01:00"] = mularray[(i + 2) % 6];
        dt.Rows[i]["02:00-03:00"] = mularray[(i + 3) % 6];
        dt.Rows[i]["03:00-04:00"] = mularray[(i + 4) % 6];
        dt.Rows[i]["04:00-05:00"] = mularray[(i + 5) % 6];
}

在这种情况下,mularray已更改为单维string数组,因为这两个维度都不是必需的。现在,元素由计算的索引选择,使用(i + 1) % 6来表示{1, 2, 3, 4, 5, 0}的模式。同样,(i + 2) % 6代表{2, 3, 4, 5, 0, 1}可以选择下一个元素。第一个元素不需要使用模数,因为它使用的i已经代表{0, 1, 2, 3, 4, 5}