当提供多个值时,数组不起作用

时间:2014-01-22 04:12:31

标签: c# asp.net arrays

这是我Page_Load的代码:

string _group_array = Group_Array.Get_Group_Array(3);

string[] groups = new string[] { _group_array };

foreach (string group in groups)
  {
     GridView grdv = new GridView();
     grdv.DataSource = Connections.isp_GET_GRIDVIEW_DATA("STDNG", group, "", "");
     grdv.DataBind();

     gridview_holder.Controls.Add(grdv);
  }

这是我Group_Array班的代码:

public static String Get_Group_Array(int count)
{
    string _cs_group_array = "";

    if(count == 1)
    {
        _cs_group_array = "A";
    }
    else if(count == 2)
    {
        _cs_group_array = "A, B";
    }
    else if (count == 3)
    {
        _cs_group_array = "A, B, C";
    }

    return _cs_group_array;
}

我的问题是,当我的点数大于1时,我的groups不起作用。关于为什么的任何想法?

3 个答案:

答案 0 :(得分:1)

问题1:您没有使用逗号作为分隔符分隔组字符串_group_array

解决方案1:您需要使用逗号作为分隔符拆分组字符串_group_array

注意:您可以使用Split()函数拆分字符串。

替换它:

string[] groups = new string[] { _group_array };

有了这个:

string[] groups = _group_array.Split(',');

问题2:字符串之间有空格。

解决方案2:您需要删除字符串之间的空格。

替换它:

else if(count == 2)
{
    _cs_group_array = "A, B";
}
else if (count == 3)
{
    _cs_group_array = "A, B, C";
}

有了这个:

   else if(count == 2)
    {
        _cs_group_array = "A,B";
    }
    else if (count == 3)
    {
        _cs_group_array = "A,B,C";
    }

完整代码:

string _group_array = Group_Array.Get_Group_Array(3);
string[] groups = _group_array.Split(',');

foreach (string group in groups)
  {
     GridView grdv = new GridView();
     grdv.DataSource = Connections.isp_GET_GRIDVIEW_DATA("STDNG", group, "", "");
     grdv.DataBind();

     gridview_holder.Controls.Add(grdv);
  }
public static String Get_Group_Array(int count)
{
    string _cs_group_array = "";

    if(count == 1)
    {
        _cs_group_array = "A";
    }
    else if(count == 2)
    {
        _cs_group_array = "A,B";
    }
    else if (count == 3)
    {
        _cs_group_array = "A,B,C";
    }

    return _cs_group_array;
}

答案 1 :(得分:1)

我将建议我认为更清洁的方法:

string[] groups = new [] { "A", "B", "C" }.Take(count);

答案 2 :(得分:0)

你的Get_Group_Array方法总是返回一个字符串,而不是字符串数组。这就是你的foreach只执行一次的原因,因为你的groups数组只有一个元素。根据您的代码,您可以更改您的方法:

public static string[] Get_Group_Array(int count)
{
   string _cs_group_array = "";

   if(count == 1)
   {
     _cs_group_array = "A";
    } 
    else if(count == 2)
    {
        _cs_group_array = "A, B";
    }
    else if (count == 3)
    {
        _cs_group_array = "A, B, C";
    }

     return _cs_group_array.Split(',');
}

然后叫它:

string[] groups = Group_Array.Get_Group_Array(3);

如果你想让它变得更好:

public static string[] Get_Group_Array(int count)
{
     string[] chars = new string[count];
     for (int i = 0; i < count; i++)
     {
         chars[i] = ((char) i + 65).ToString();
     }

     return chars;
}