У меня есть страница с «Доступ к папке» и одна CheckBox
.Отправить список рассылки C#
Сегодня в моем .cs
для каждого checkbox
проверяемого в этом Folder Access, я отправить сообщение владельцу этой папки. Чтобы получить это письмо, я создаю на своей странице HiddenField для электронной почты.
Но теперь у меня есть более одного владельца для каждой папки. если он продолжит этот путь, у меня есть повторяющиеся строки. Как я могу получить список для электронной почты для каждой папки?
Мои .aspx
<Columns>
<asp:BoundField DataField="FolderAccess" HeaderText="Folder Access" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Text="Access to Read" OnCheckedChanged="CheckBox1_ChangeCheck"
AutoPostBack="true" />
<asp:HiddenField ID="Email" runat="server" Value='<%# Bind("Email") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
Мои .cs
public class ListRequest
{
public string Email { get; set; }
public string FolderAccess { get; set; }
}
public List<ListRequest> PreencheValores(SqlDataReader reader)
{
var lista = new List<ListRequest>();
while (reader.Read())
{
var listRequest = new ListRequest();
listRequest.Email = reader["Email"].ToString();
listRequest.FolderAccess = reader["FolderAccess"].ToString();
lista.Add(listRequest);
}
return lista;
}
public List<ListRequest> ConsultarRequest()
{
var lstRetorno = new List<ListRequest>();
using (objConexao = new SqlConnection(strStringConexao))
{
using (objCommand = new SqlCommand(strSelectPorID, objConexao))
{
try
{
objConexao.Open();
var objDataReader = objCommand.ExecuteReader();
if (objDataReader.HasRows)
lstRetorno = PreencheValores(objDataReader);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
objConexao.Close();
}
}
}
return lstRetorno;
}
protected void btnSend_OnClick(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView.Rows)
{
CheckBox check = (CheckBox)row.FindControl("CheckBox1");
HiddenField hd1 = (HiddenField)row.FindControl("Email");
string email = hd1.Value.ToString();
if (check.Checked == true)
{
System.Net.Mail.MailMessage objEmail = new System.Net.Mail.MailMessage();
objEmail.From = new MailAddress("[email protected]", "XXX");
objEmail.To.Add(email);
objEmail.Priority = System.Net.Mail.MailPriority.High;
objEmail.IsBodyHtml = true;
objEmail.Subject = "System NDRSecurity - Novas Requisições.";
objEmail.Body = "TEST";
objEmail.SubjectEncoding = Encoding.GetEncoding("ISO-8859-1");
objEmail.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");
SmtpClient objSmtp = new SmtpClient("XXX");
objSmtp.EnableSsl = true;
objSmtp.Port = 25;
objSmtp.Credentials = new NetworkCredential("[email protected]", "XXX");
objSmtp.Send(objEmail);
}
}
Response.Redirect("home.aspx");
}
, но этот путь не будет показывать повторяющиеся строки в моей странице доступа к папкам? Или, если я использую List для отправки по электронной почте, он продолжает показывать одну строку в Access Folder Access? Моя озабоченность не показывает более одной строки для каждого «Доступ к папке». – CaioVJesus89
То, что я предложил, будет показывать только одну строку в папке. –
Одна проблема. Покажите одну ошибку, чтобы использовать ToList(). Я использую System.Collections.Generic. и System.Linq. В спискеRequest.Email = reader ["Email"]. ToList(); – CaioVJesus89