ASP电子邮件客户端错误,GridView的和复选框
问题描述:
我在执行下面的代码中的问题,我创建一个电子邮件系统,我可以通过点击一个GridView复选框选择多个邮件。一旦我选择了我想要的电子邮件并点击发送按钮,我收到以下错误ASP电子邮件客户端错误,GridView的和复选框
索引超出范围。必须是非负数且小于集合的大小。 参数名:指数
说明:在当前Web请求的执行过程中发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。 参数名:指数
这里如下 我的代码任何帮助表示赞赏
protected void send_Click(object sender, EventArgs e)
{
//Array list to hold selected email ids
ArrayList emailArray = new ArrayList();
//Looping through rows of GridView
foreach (GridViewRow item in GridView1.Rows)
{
//Creating checkbox object using the find control method
CheckBox cb = (CheckBox)item.Cells[1].FindControl("CheckBox1");
//CheckBox cb = (CheckBox)item.FindControl("CheckBox1");
//Checking whether checkbox is checked or not
if (cb.Checked)
{
//If checked Adding email id to Arraylist
emailArray.Add(GridView1.DataKeys[item.RowIndex]["email"].ToString());
}
}
//Looping through the email id list
foreach (string email in emailArray)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("[email protected]");
msg.To.Add(email);
msg.Subject = subjecttext.Text;
msg.Body = TextBox1.Text;
SmtpClient smt = new SmtpClient("smtp.gmail.com", 587);
smt.Credentials = new System.Net.NetworkCredential("[email protected]", "xxxxxxxxx");
smt.EnableSsl = true;
smt.Send(msg);
//}
}
emailsent.Text = "Email has been sent Successfully";
}
}
<asp:GridView ID="GridView1" runat="server" Visible="true"
CssClass="mydatagrid" EmptyDataText="No Students Enrolled on this Module"
EmptyDataRowStyle-BorderWidth="0px" PagerStyle-CssClass="pager"
HeaderStyle-CssClass="header" RowStyle-CssClass="rows"
DataSourceID="displayemail">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="email" HeaderText="email" SortExpression="name" />
</Columns>
</asp:GridView>
答
你所缺的是设置GridView控件的DataKeyName
财产。您的GridView
应如下更改。
<asp:GridView ID="GridView1" runat="server" Visible="true"
CssClass="mydatagrid" EmptyDataText="No Students Enrolled on this Module"
EmptyDataRowStyle-BorderWidth="0px" PagerStyle-CssClass="pager"
HeaderStyle-CssClass="header" RowStyle-CssClass="rows"
DataSourceID="displayemail" DataKeyNames="email">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="email" HeaderText="email" SortExpression="name" />
</Columns>
</asp:GridView>
你有没有设置一个突破点并通过它?究竟在哪里抛出错误? –
林很新的ASP所以不知道一个破发点是什么,有错误抛出的观点是emailArray.Add(GridView1.DataKeys [item.RowIndex] [“电子邮件”]的ToString()); –
您可以张贴在GridView标记? –