2012-06-29 3 views
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을 사용하지 않으려 고했지만 쉼표가 모든 이메일 옆에 추가됩니다. 전자 메일을 올바르게 분리하려면 어떻게합니까?선택한 확인란의 정보 다음에 쉼표를 어떻게 넣으시겠습니까?

예 : [email protected], [email protected], [email protected]

답변

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; 
    } 
} 

희망이 있습니다.

+0

이 방법을 시도했지만 쉼표는 매번 전자 메일이 끝날 때마다 나타납니다. – user1490374

+0

내 게시물에 더 많이 추가 했으므로 이제는 효과가 있습니다. – 3aw5TZetdf

+0

네, 효과가있었습니다. 고마워! – user1490374

2

string.Join은 문자열 배열과 함께 작동합니다. 간단한 문자열을 전달하면 변경 사항이 표시되지 않습니다. 난 당신이, 각 이메일 주소 후, 그 당신은 결국 귀하의 경우

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(","); 
      } 

위해 모두 StringBuilder를 사용하는 경우 당신이 할 수있는 더 추가 할 생각 :

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

나중에 할당 할 수

textEmails.Text = strEmails; 
+0

@Downvoter, 관심을 가져주세요? – Habib

관련 문제