我有一个网格视图,其中包含项目模板字段中的checkboxex。如果选中复选框,则发送特定标识的邮件。现在发送邮件时,复选框应替换为符号正确的图像。现在,当任何人看到网格视图时,应该有符号的图像对于发送邮件的人是正确的,对于那些没有发送邮件的人来说应该是复选框。
//这是我的.aspx页面的代码
<%@ Page Title="Search candidates based on vacancy" Language="C#" MasterPageFile="~/HR Department/hrmasterpage.master"
AutoEventWireup="true" CodeFile="searcAppForVac.aspx.cs" Inherits="HR_Department_searcAppForVac" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<table width="100%">
<tr>
<td>
</td>
</tr>
<tr>
<td align="center" class="tdtitle">
Search Candidates
</td>
</tr>
<tr>
<td>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table width="100%">
<tr>
<td class="RowHeight" width="20%">
Select Company
</td>
<td width="30%">
<asp:DropDownList ID="companyList" runat="server" AppendDataBoundItems="true" AutoPostBack="True"
OnSelectedIndexChanged="companyList_SelectedIndexChanged" Width="150px">
<asp:ListItem Text="-Select Company-" Value="-1"></asp:ListItem>
</asp:DropDownList>
</td>
<td width="20%">
Select Department
</td>
<td width="30%">
<asp:DropDownList ID="deptList" runat="server" AppendDataBoundItems="true" AutoPostBack="True"
onclick="Validate();" OnSelectedIndexChanged="deptList_SelectedIndexChanged"
Width="150px">
<asp:ListItem Value="-1">-Select Department-</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="RowHeight" width="20%">
Select Vacancy
</td>
<td colspan="3" width="*">
<asp:DropDownList ID="vacanyList" runat="server" AppendDataBoundItems="true"
Width="200px" AutoPostBack="True"
onselectedindexchanged="vacanyList_SelectedIndexChanged">
<asp:ListItem Value="-1">-Select Vacancy-</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<asp:Label ID="notifyLbl" runat="server" Font-Size="Large" ForeColor="Red"
Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td colspan="4">
<asp:Label ID="titleLbl" runat="server" Font-Size="Large" ForeColor="Red"
Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td colspan="4">
</td>
</tr>
<tr>
<td colspan="4">
<asp:GridView ID="appForVacGrid" runat="server" AutoGenerateColumns="False"
CellPadding="4"
onpageindexchanging="appForVacGrid_PageIndexChanging" GridLines="None"
CssClass="mGrid" DataKeyNames="AppId">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
App.ID
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="appIdLbl" runat="server" Text='<%# Eval("AppId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
First Name
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="firstNameLbl" runat="server" Text='<%# Eval("AppFirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Last Name
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lastNameLbl" runat="server" Text='<%# Eval("AppLastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Qualification
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="qualiNameLbl" runat="server" Text='<%# Eval("QualiName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Experience
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("TotalExpYear") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
EmailId
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="emailLbl" runat="server" Text='<%# Eval("AppEmailId1") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Send Mail
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="sendMailBox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle Font-Bold="True" ForeColor="White"
HorizontalAlign="Right" />
<PagerStyle ForeColor="White" HorizontalAlign="Center"
VerticalAlign="Top" CssClass="pgr" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle Font-Bold="True" ForeColor="White"
Font-Size="Medium" HorizontalAlign="Left" />
<AlternatingRowStyle CssClass="alt" />
</asp:GridView>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<asp:Label ID="noSelectionLbl" runat="server" Font-Bold="True"
Font-Size="Large" ForeColor="Red" Text="Label"></asp:Label>
&LT;% - - %GT;
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<script type="text/javascript">
function alertOnBadSelection() {
var select = document.getElementById('companyList');
if (select.options[select.selectedIndex].value == "-Select Company-") {
alert('Please Select Company!');
return false;
}
}
</script>
</asp:Content>
//这是我的.aspx.cs页面的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
public partial class HR_Department_searcAppForVac : System.Web.UI.Page
{
DataOperation oDo = new DataOperation();
AppVacancyDetailClass objAppVacDetail = new AppVacancyDetailClass();
protected void Page_Load(object sender, EventArgs e)
{
//SET LABLE VISIBILITY TO FALSE.
notifyLbl.Visible = false;
titleLbl.Visible = false;
sendMailBtn.Visible = false;
noSelectionLbl.Visible = false;
//SET GRIDVIEW'S PAGGING PROPERTY.
appForVacGrid.AllowPaging = true;
appForVacGrid.PageSize = 3;
try
{
if (!IsPostBack)
{
Session.Clear();
//DISABLE DEPARTMENT DROPDOWN LIST AND VACANCY DROPDOWN LIST TILL COMPANY IS NOT SELECTED.
deptList.Enabled = false;
vacanyList.Enabled = false;
//FILL COMPANY DROPDOWN LIST HERE.
DataTable objCmpnyTable = oDo.DropDownList("select * from tblCompanyMaster");
if (objCmpnyTable.Rows.Count > 0)
{
companyList.DataSource = objCmpnyTable;
companyList.DataValueField = "CompId";
companyList.DataTextField = "CompName";
companyList.DataBind();
}
else
{
notifyLbl.Visible = true;
notifyLbl.Text = "There is no company in the list.";
}
}
else
{
//DISABLE ALL DROPDOWN LISTS IF COMPANY DROPDOWN LIST IS SET TO ITS DEFAULT VALUE.
if (companyList.SelectedIndex <= 0)
{
deptList.Enabled = false;
vacanyList.Enabled = false;
}
}
}
catch (Exception)
{
throw;
}
}
protected void companyList_SelectedIndexChanged(object sender, EventArgs e)
{
//DISABLE VACANCY LIST IF DEPARTMENT IS NOT SELECTED.
vacanyList.Enabled = false;
//CLEAR GRIDVIEW WHEN NEW COMPANY IS SELECTED.
appForVacGrid.DataSource = null;
appForVacGrid.DataBind();
try
{
if (companyList.SelectedIndex > 0)
{
deptList.Enabled = true;
deptList.Items.Clear();
string str = "select * from vwCompWiseList where CompId=" + companyList.SelectedValue;
DataTable objDeptTable = oDo.DropDownList("select DeptId,DeptName from vwCompWiseDept where CompId= "+companyList.SelectedValue);
if (objDeptTable.Rows.Count > 0)
{
deptList.DataSource = objDeptTable;
deptList.DataTextField = "DeptName";
deptList.DataValueField = "deptId";
deptList.DataBind();
//SET DEPARTMENT DROPDOWN LIST TO ITS BEFORE FIRST VALUE
deptList.Items.Insert(0, new ListItem("--Select Department--", "-1"));
}
else
{
deptList.Items.Insert(0, new ListItem("--No Departments--", "-1"));
notifyLbl.Visible = true;
notifyLbl.Text = "No Departments Available in " + companyList.SelectedItem.Text;
}
}
else
{
notifyLbl.Visible = true;
notifyLbl.Text = "Select Company....";
//CLEAR GRIDVIEW
appForVacGrid.DataSource = null;
appForVacGrid.DataBind();
}
}
catch (Exception)
{
throw;
}
}
protected void deptList_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (deptList.SelectedIndex > 0)
{
//ENABLE VACANCY DROPDOWN LIST WHEN DEPARTMENT IS SELECTED.
vacanyList.Enabled = true;
//CLEAR OLD VALUE AND REFILL VACANCY DROPDOWN LIST.
vacanyList.Items.Clear();
//GET VACANCIES.
DataTable objVacancytbl = oDo.DropDownList("select VacId,VacTitle from tblVacancyMaster where DeptId =" + deptList.SelectedValue + " and CompId=" + companyList.SelectedValue);
if (objVacancytbl.Rows.Count > 0)
{
vacanyList.DataSource = objVacancytbl;
vacanyList.DataValueField = "VacId";
vacanyList.DataTextField = "VacTitle";
vacanyList.DataBind();
//SET VACANCY DROPDOWN LIST BEFORE FIRST VALUE.
vacanyList.Items.Insert(0, new ListItem("--Select Vacancy--", "-1"));
appForVacGrid.DataSource = null;
appForVacGrid.DataBind();
}
else
{
notifyLbl.Visible = true;
notifyLbl.Text = "ALL VACANCIES ARE CLOSED IN "+" "+deptList.SelectedItem.Text.ToUpper();
vacanyList.Enabled = false;
appForVacGrid.DataSource = null;
appForVacGrid.DataBind();
}
}
else
{
notifyLbl.Visible = true;
notifyLbl.Text = "Select Department...";
//CLEAR GRIDVIEW.
appForVacGrid.DataSource = null;
appForVacGrid.DataBind();
vacanyList.Enabled = false;
}
}
catch (Exception)
{
throw;
}
}
protected void vacanyList_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
//FILTER APPLICANTS FOR PERTICULAR VACANCY IN SELECTED DEPARTMETN OF SELECTED COMPANY.
DataTable AppListTbl = objAppVacDetail.GetValue("CompId=" + companyList.SelectedValue + " and DeptId=" + deptList.SelectedValue + " and VacId=" + vacanyList.SelectedValue);
if (AppListTbl.Rows.Count > 0)
{
appForVacGrid.DataSource = AppListTbl;
appForVacGrid.DataBind();
appForVacGrid.Columns[5].Visible = false;
appForVacGrid.Columns[0].Visible = false;
Session.Add("snAppListTbl", AppListTbl);
titleLbl.Visible = true;
titleLbl.Text = AppListTbl.Rows.Count.ToString() + " " + "CANDIDATE(S) ARE ELIGIBLE FOR THE POST OF" + " " + vacanyList.SelectedItem.Text.ToUpper() + ".";
sendMailBtn.Visible = true;
}
}
catch (Exception)
{
throw;
}
}
protected void appForVacGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
//FUNCTION TO PERSIST CHECKBOX STATE IN GRIDVIEW DURING PAGGINATION(POSTBACK).
RememberOldValues();
titleLbl.Visible = true;
titleLbl.Text = ((DataTable)Session["snAppListTbl"]).Rows.Count.ToString() + " " + "CANDIDATE(S) ARE ELIGIBLE FOR THE POST OF" + " " + vacanyList.SelectedItem.Text.ToUpper() + ".";
appForVacGrid.PageIndex = e.NewPageIndex;
appForVacGrid.DataSource = (DataTable)Session["snAppListTbl"];
appForVacGrid.DataBind();
//FUNCTION TO SET CHECKBOX TO ITS PREVIOUS VALUE DURING PAGGINATION.
RepopulateValues();
sendMailBtn.Visible = true;
}
catch (Exception)
{
throw;
}
}
protected void sendMailBtn_Click(object sender, EventArgs e)
{
DataTable AppListTable = ((DataTable)Session["snAppListTbl"]);
//FUNCTION TO PERSIST CHECKBOX STATE IN GRIDVIEW DURING POSTBACK
RememberOldValues();
if (Session["CheckBoxValue"] != null)
{
//RESET PAGGING PROPERTY AND REBIND GRIDVIEW .
appForVacGrid.AllowPaging = false;
appForVacGrid.PageSize = AppListTable.Rows.Count;
appForVacGrid.DataSource = AppListTable;
appForVacGrid.DataBind();
//SET VARIABLES
ArrayList AppIdList = (ArrayList)Session["CheckBoxValue"];
string strToId = "", strMailBody = "", strCcId = "", strBccId = "";
string strFromId = "chetan.patel@sahmed.com";
string strVacTitle = vacanyList.SelectedItem.Text;
string strCompName = companyList.SelectedItem.Text;
string strSubject = "Regarding Selection of Your Resume";
//GET APPLICANT'S EMAILID IF CHECKBOX IS CHECKED.
foreach (GridViewRow Row in appForVacGrid.Rows)
{
int intIndex = (int)appForVacGrid.DataKeys[Row.RowIndex].Value;
if (AppIdList.Contains(intIndex))
{
if (strToId == "")
strToId = ((Label)Row.FindControl("emailLbl")).Text;
else
strToId += "," + ((Label)Row.FindControl("emailLbl")).Text;
}
}
//CREATE MAILBODY.
strMailBody = CommonProcedures.GetMailBody(strVacTitle, strCompName);
//SEND MAIL.
bool isMailSent = true;// CommonProcedures.SendMail(strFromId, strToId, strCcId, strBccId, strSubject, null, strMailBody, false);
if (isMailSent)
{
titleLbl.Visible = true;
titleLbl.Text = "MAIL HAS BEEN SENT TO THE SELECTED APPLICANTS";
sendMailBtn.Visible = true;
}
else
{
titleLbl.Visible = true;
titleLbl.Text = "MAIL SENDING FAIL.... TRY AGAIN LATER..";
sendMailBtn.Visible = true;
}
//RESET PAGGING PROERTY AND REBIND GRIDVIEW.
appForVacGrid.AllowPaging = true;
appForVacGrid.PageSize = 3;
appForVacGrid.DataSource = AppListTable;
appForVacGrid.DataBind();
sendMailBtn.Visible = true;
Session.Clear();
}
else
{
noSelectionLbl.Visible = true;
noSelectionLbl.Text = "NO APPLICANT IS SELECTED...";
sendMailBtn.Visible = true;
}
}
//FUNCTION TO PERSIST STATE OF CHECKBOX IN GRIDVIEW
private void RememberOldValues()
{
ArrayList AppIdList = new ArrayList();
int intIndex = -1;
foreach (GridViewRow Rows in appForVacGrid.Rows)
{
intIndex = (int)appForVacGrid.DataKeys[Rows.RowIndex].Value;
CheckBox sendMailBox = ((CheckBox)Rows.FindControl("sendMailBox"));
if (Session["CheckBoxValue"] != null)
{
AppIdList = (ArrayList)Session["CheckBoxValue"];
}
if (sendMailBox.Checked)
{
if (!AppIdList.Contains(intIndex))
AppIdList.Add(intIndex);
}
else
AppIdList.Remove(intIndex);
}
if (AppIdList.Count > 0 && AppIdList!=null)
{
Session["CheckBoxValue"] = AppIdList;
}
}
//FUNCTION TO SET CHECKBOX VALUE AFTER POSTBACK.
private void RepopulateValues()
{
if (Session["CheckBoxValue"] != null)
{
ArrayList AppIdList = (ArrayList)Session["CheckBoxValue"];
if (AppIdList.Count > 0 && AppIdList != null)
{
foreach (GridViewRow Row in appForVacGrid.Rows)
{
int intIndex = (int)appForVacGrid.DataKeys[Row.RowIndex].Value;
if (AppIdList.Contains(intIndex))
{
CheckBox sendMailBox = (CheckBox)Row.FindControl("sendMailBox");
sendMailBox.Checked = true;
}
}
}
}
}
}
请指导我如何实现目标?
答案 0 :(得分:1)
<asp:TemplateField>
<HeaderTemplate>
Send Mail
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="sendMailBox" runat="server" />
<asp:img id="CorrectImg" runat="server" imagesrc="yourpathhere" visible="false"/>
</ItemTemplate>
</asp:TemplateField>
然后在你的RowDatabound方法上:
if (Convert.ToBoolean(Databinder.Eval("IsCorrect"))
{
e.Row.FindControl("sendMailBox").Visible = false;
e.Row.FindControl("CorrectImg").Visible = true;
}