0

再会

我有显示员工数据的网格视图。

      <asp:TabContainer ID="tcmanagers" runat="server" ActiveTabIndex="0" 
                    Width="100%">
        <asp:TabPanel ID="TabAdmins" runat="server" HeaderText="Admins" TabIndex="3">
                        <ContentTemplate>

                        <asp:Label ID="Label4" runat="server" Font-Bold="False" Font-Italic="False" CssClass="style3"
                        ForeColor="Blue" Width="290px">Select Admins to send:</asp:Label>

                         &nbsp;&nbsp;&nbsp; 
                         <asp:Button ID="Sendadmins" runat="server" Text="Send Email" Width="201px"/>
                         <br />
                         <br />
                         <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" DataKeyNames="Employee_ID"
                            DataSourceID="SqlDataSource3" Width="633px" CssClass="grd">
                         <Columns>
                         <asp:BoundField DataField="Employee_ID" HeaderText="Employee_ID" ReadOnly="True"
                                   SortExpression="Employee_ID" Visible="False" />
                          <asp:BoundField DataField="Employee_Number" HeaderText="Employee Number" SortExpression="Employee_Number">
                         <ItemStyle Width="70px" Wrap="False" />
                         </asp:BoundField>
                         <asp:BoundField DataField="Employee_Surname" HeaderText="Surname" SortExpression="Employee_Surname">
                         <ItemStyle Wrap="False" />
                         </asp:BoundField>
                         <asp:BoundField DataField="Employee_Name" HeaderText="Name" SortExpression="Employee_Name">
                         <ItemStyle Wrap="False" />
                         </asp:BoundField>
                         <asp:BoundField DataField="Employee_Job_Title" HeaderText="Job Title" SortExpression="Employee_Job_Title">
                         <ItemStyle Wrap="False" />
                         </asp:BoundField>
                         <asp:BoundField DataField="Employee_Dept" HeaderText="Department" SortExpression="Employee_Dept">
                         <ItemStyle Wrap="False" />
                         </asp:BoundField>
                         <asp:BoundField DataField="Employee_EMail" HeaderText="Email Address" SortExpression="Employee_EMail">
                         <ItemStyle Wrap="False" />
                         </asp:BoundField>
                         <asp:TemplateField HeaderText="Check All"><HeaderTemplate>
                         <asp:CheckBox ID="chkAlladmin" runat="server" AutoPostBack="True" OnCheckedChanged="chkAllAdmin_CheckedChanged" />
                         </HeaderTemplate>
                         <ItemTemplate>
                         <asp:CheckBox ID="chkAdmin" runat="server" />
                         </ItemTemplate>
                         </asp:TemplateField>
                         </Columns><RowStyle Font-Bold="False" Font-Italic="False" Font-Names="Arial" Font-Size="10pt" />
                         <EditRowStyle Font-Names="Arial" Font-Size="10pt" /><HeaderStyle Font-Bold="False" Font-Italic="False" Font-Names="Arial" Font-Size="10pt"
                             Font-Underline="False" CssClass="grdhead" HorizontalAlign="Center" />
                             <AlternatingRowStyle CssClass="grdalt" />
                             <SelectedRowStyle BackColor="Fuchsia" />
                             </asp:GridView>
                                    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
                                ProviderName="<%$ ConnectionStrings:ApplicationServices.ProviderName %>" SelectCommand="SELECT  dbo.lms_Employee.Employee_ID,dbo.lms_Employee.Employee_EMail,dbo.lms_Employee.Employee_Number, dbo.lms_Employee.Employee_Surname, dbo.lms_Employee.Employee_Name, dbo.lms_Employee.Employee_Job_Title,dbo.lms_Employee.Employee_Dept FROM dbo.aspnet_Membership INNER JOIN  dbo.aspnet_Users ON dbo.aspnet_Membership.UserId = dbo.aspnet_Users.UserId INNER JOIN  dbo.aspnet_UsersInRoles ON dbo.aspnet_Users.UserId = dbo.aspnet_UsersInRoles.UserId INNER JOIN   dbo.lms_Employee ON dbo.aspnet_Users.UserName = dbo.lms_Employee.Employee_UserName WHERE     (dbo.lms_Employee.Employee_Active = 'True') AND (dbo.aspnet_UsersInRoles.RoleId = '9ec9b26d-64a1-4736-8e82-fe6de7c7caac') and Employee_Number <> '100'">
                                </asp:SqlDataSource>
                          </ContentTemplate>
                    </asp:TabPanel>
                </asp:TabContainer>

现在我可以使用下面的代码选择其中的所有数据或一次选择一个数据。

Protected Sub chkAllAdmin_CheckedChanged(sender As Object, e As EventArgs)

    For Each gr As GridViewRow In GridView3.Rows
        Dim cb As CheckBox = DirectCast(gr.FindControl("chkAdmin"), CheckBox)
        If DirectCast(sender, CheckBox).Checked Then
            cb.Checked = True
        Else
            cb.Checked = False
        End If
    Next

End Sub

我想要做的是向所有选定的员工发送电子邮件。我有一个 iis 服务器和 sql 服务器。所以我的数据库在 sql server 上,我的 web 应用程序在 iis server 上。

我不知道如何处理这个任何帮助将不胜感激。

4

1 回答 1

0

无需为您编写代码,以下是我用于此类任务的策略:

  1. 将 BoundField 项转换为 TemplateFields。执行此操作时,您可能会在 ItemTemplate 中为每个字段提供具有有意义名称的控件,例如“lblEmployeeEmail”
  2. 单击按钮时,遍历 GridView 中的项目,对于每一行,使用 FindControl() 方法查找 CheckBox(然后检查它是否已选中)并使用 FindControl() 还可以获取任何其他字段需要。(电子邮件标签等)

这是要遵循的通用代码模式(来自learneveryday.net):

foreach (GridViewRow gvrow in GridView1.Rows)
{
   CheckBox CheckBox1 = (CheckBox)gvrow.FindControl("CheckBox1");
   if (CheckBox1.Checked)
   {
      // we write this code for find a label value
      Label lblLookFor = (Label)gvrow.FindControl("lblLookFor");
      string lookfor = lblLookFor.Text;
   }
}

当然,这仅涉及如何获取被检查的员工以及如何从 GridViewRows 中检索他们的电子邮件地址。我假设您已经知道如何发送电子邮件,但如果不知道,请参阅MSDN 文档

于 2013-10-29T13:42:40.697 回答