2011-04-27 87 views
0

我有一个包含复选框和分页功能的gridview。现在,当我检查任何复选框,然后更改页面时,当时所有选中的复选框都会失去其状态。我想在分页过程中保留复选框的状态。我怎样才能做到这一点?在分页过程中保留复选框状态

//这里是.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> 
      &nbsp; 
     </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"> 
           &nbsp; 
           <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"> 
           &nbsp;</td> 
         </tr> 
         <tr> 
          <td colspan="4"> 
           <asp:GridView ID="appForVacGrid" runat="server" AutoGenerateColumns="False" 
           CellPadding="4" AllowPaging="True" 
            onpageindexchanging="appForVacGrid_PageIndexChanging" GridLines="None" 
            PageSize="3" CssClass="mGrid"> 
            <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> 
               &nbsp;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"> 
           &nbsp; 
          </td> 
         </tr> 
         <tr> 
          <td align="center" colspan="4"> 
           <asp:Button ID="sendMailBtn" runat="server" Height="40px" Text="SEND MAIL" 
            Width="100px" onclick="sendMailBtn_Click" /> 
          </td> 
         </tr> 
         <tr> 
          <%--<td> 
           &nbsp; 
          </td>--%> 
         </tr> 
        </table> 
       </ContentTemplate> 
       <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="companyList" EventName="SelectedIndexChanged" /> 
       <asp:AsyncPostBackTrigger ControlID="deptList" EventName="SelectedIndexChanged" /> 
       <asp:AsyncPostBackTrigger ControlID="appForVacGrid" EventName="pageindexchanged" /> 
       </Triggers> 
       </asp:UpdatePanel> 


     </td> 
    </tr> 
    <tr> 
     <td> 
      &nbsp; 
     </td> 
    </tr> 
    <tr> 
     <td> 
      &nbsp; 
     </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> 

//代码.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) 
{ 
    notifyLbl.Visible = false; 
    titleLbl.Visible = false; 
    sendMailBtn.Visible = false; 
    //mailSentLbl.Visible = false; 
    try 
    { 
     if (!IsPostBack) 
     { 
      //Disable department dropdown list and vacancy dropdown list till company is not selected. 
      deptList.Enabled = false; 
      vacanyList.Enabled = false; 
      //Fill Company dropdown list. 
      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 not any company in the list."; 
      } 
     } 
     else 
     { 
      if (companyList.SelectedIndex <= 0) 
      { 
       //Disable department dropdown list and vacancy dropdown list till company is not selected. 
       deptList.Enabled = false; 
       vacanyList.Enabled = false; 
      } 
     } 
    } 
    catch (Exception) 
    { 
      throw; 
    } 
} 
protected void companyList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    //Disable vacancy dropdown list till depratment list is not selected 
    vacanyList.Enabled = false; 
    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(); 
       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...."; 
      appForVacGrid.DataSource = null; 
      appForVacGrid.DataBind(); 
     } 
    } 
    catch (Exception) 
    { 

     throw; 
    }  
} 
protected void deptList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     if (deptList.SelectedIndex > 0) 
     { 
      vacanyList.Enabled = true; 
      vacanyList.Items.Clear(); 
      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(); 
       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..."; 
      appForVacGrid.DataSource = null; 
      appForVacGrid.DataBind(); 
      vacanyList.Enabled = false; 
     } 
    } 
    catch (Exception) 
    { 

     throw; 
    } 
} 
protected void vacanyList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     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; 
      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; 
     } 
     else 
     { 
      notifyLbl.Visible = true; 
      notifyLbl.Text = "ALL VACANCIES ARE CLOSED IN " + " " + deptList.SelectedItem.Text.ToUpper(); 
      appForVacGrid.DataSource = null; 
      appForVacGrid.DataBind(); 
     } 
    } 
    catch (Exception) 
    { 

     throw; 
    } 
} 
protected void appForVacGrid_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
     //DataTable AppListTbl = (DataTable)Session["snAppListTbl"]; 
     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(); 
     sendMailBtn.Visible = true; 
} 
protected void sendMailBtn_Click(object sender, EventArgs e) 
{ 
    DataTable AppListTable = ((DataTable)Session["snAppListTbl"]); 
    int intTotalRows = AppListTable.Rows.Count; 
    string strFromId="[email protected]",strToId="",strCcId="",strBccId=""; 
    string strVacTitle="",strCompName="",strMailBody=""; 
    string strSubject = "Rgarding Selection of Your Resume"; 
    Label EmailLbl; 
    bool isMailSent=false; 
    //for (int intRow = 0; intRow < intTotalRows; intRow++) 
    foreach (GridViewRow Row in appForVacGrid.Rows) 
    { 
     CheckBox objSendMail = (CheckBox)Row.FindControl("sendMailBox"); 
     //CheckBox objSendMail = (CheckBox)appForVacGrid.Rows[Row].FindControl("sendMailBox"); 
     if (objSendMail.Checked) 
     { 
      if (strToId == "") 
      { 
       //strToId = AppListTable.Rows[Row]["AppEmailId1"].ToString(); 
       EmailLbl = (Label)Row.FindControl("emailLbl"); 
       strToId = EmailLbl.Text; 
      } 
      else 
      { 
       //strToId += "," + AppListTable.Rows[Row]["AppEmailId1"].ToString(); 
       EmailLbl = (Label)Row.FindControl("emailLbl"); 
       strToId +=","+ EmailLbl.Text; 
      } 
     } 
    } 
    strVacTitle = vacanyList.SelectedItem.Text; 
    strCompName = companyList.SelectedItem.Text; 
    ////appForVacGrid.AllowPaging = false; 
    ////appForVacGrid.DataBind(); 
    strMailBody = CommonProcedures.GetMailBody(strVacTitle, strCompName); 
    isMailSent=CommonProcedures.SendMail(strFromId, strToId, strCcId, strBccId, strSubject, null, strMailBody, false); 
    //appForVacGrid.AllowPaging = true; 
    //appForVacGrid.DataBind(); 
    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; 
    } 
    appForVacGrid.DataSource = AppListTable; 
    appForVacGrid.DataBind(); 
} 

}

+1

好问题号码... 500万和800万:) - > stackoverflow.com/questions/5800000 – balexandre 2011-04-27 07:40:53

+0

@balexandre ...谢谢 – 2011-04-27 08:39:50

回答

1

你绑定的代码网页PageIndexChanging事件,所以它不可能与您的代码首先你必须更新复选框的值为Da这是在会议中的纹身。所以下次它会显示复选框..