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

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 に答える
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 に答える