2
       foreach (GridViewRow row in GridView1.Rows)         
       {           
        var chk = row.FindControl("myCheckBox") as CheckBox;
        if (chk.Checked)
        {
        var email = row.FindControl("LabelEmail") as Label;
        txtEmails.Text += (string.Join(",", email.Text));
        }

我正在从网格视图中提取电子邮件,并假设相应地放置电子邮件,并用逗号分隔它们。我尝试使用 string.join 方法,但它根本没有出现在文本框中。我尝试不使用 string.join 但逗号将添加到每封电子邮件旁边。如何正确分隔电子邮件?

示例:Helloworld@gmail.com、Helloeveryone@gmail.com、HelloBye@gmail.com

4

2 回答 2

2

代替:

txtEmails.Text += (string.Join(",", email.Text));

试试这个:

txtEmails.Text += email.Text + ", ";

编辑:

因为它在最后一封电子邮件中添加了一个逗号,所以您可以执行以下操作来防止这种情况:

int counter = 0;
// The counter variable must be global
foreach (GridViewRow row in GridView1.Rows)         
{           
    var chk = row.FindControl("myCheckBox") as CheckBox;
    if (chk.Checked)
    {
        counter++;
        var email = row.FindControl("LabelEmail") as Label;
        if (counter <= 1)
        txtEmails.Text += email.Text;
        else
        txtEmails.Text += ", " + email.Text;
    }
}

希望这可以帮助!

于 2012-06-29T06:05:00.737 回答
2

string.Join 与字符串数组一起使用,如果你传递一个简单的字符串,就像你的情况一样,你不会看到任何变化。我认为您想在每个电子邮件地址之后附加,如果您使用 StringBuilder 来处理您的案例会更好

StringBuilder sb = new StringBuilder();
foreach (GridViewRow row in GridView1.Rows)
        {
            var chk = row.FindControl("myCheckBox") as CheckBox;
            if (chk.Checked)
            {
            var email = row.FindControl("LabelEmail") as Label;
            sb.Append(email.Text);
            sb.Append(",");
            }

最后你可以这样做:

string strEmails = sb.ToString().TrimEnd(','); // TrimEnd to remove the last comma

稍后您可以分配

textEmails.Text = strEmails;
于 2012-06-29T06:08:04.550 回答