Сетка ASP.NET в 2.0, имеющая проблемы с подкачкой для сохранения значения флажка при нажатии кнопки сохранения

это мой код нажатия кнопки, который заполняет вид сетки

protected void Btnok_Click(object sender, EventArgs e)
    {

        try
        {
            if (Page.IsValid)
            {
                int passoutYear = Convert.ToInt32(passout.SelectedValue);
                int courseList = Convert.ToInt32(course.SelectedValue);
                StringBuilder sb = new StringBuilder();
                string sep = "";




                foreach (ListItem li in Branch.Items)
                {
                    if (li.Selected)
                    {
                        sb.Append(sep + li.Value);
                        sep = ",";
                    }
                }

                DataTable dt = placedStudentManager.GetPlacedStudentList(sb, passoutYear, courseList);
                if (dt != null && dt.Rows.Count != 0)
                {
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                    GridView1.Visible = true;
                    Btnsave.Visible = true;
                    ViewState["dt"] = dt;
                }
                else 
                {
                    noRecordExistOnOkButton.Text = "No Record Exist To Be Inserted For Recruited Students";
                    Btnsave.Visible = false;
                    GridView1.Visible = false;
                }
            }
        }
        catch (Exception ex)
        {
            COMMON.logger.Error("Error On Button Btnok_Click:CompanySelected.aspx.cs ", ex);
        }
    }

это мое сохранение кнопки, которое сохраняет проверил флажок gridRow в базе данных

 protected void Btnsave_Click(object sender, EventArgs e)
    {

        try
        {
            if (Page.IsValid)
            {
                int passoutYear = Convert.ToInt32(passout.SelectedValue);
                int companyId = Convert.ToInt32(company.SelectedValue);
                int courseId = Convert.ToInt32(course.SelectedValue);
                string package = txtpackage.Text.Trim();
                string venu = txtvenue.Text.Trim();

                DateTimeFormatInfo dateInfo = new DateTimeFormatInfo();
                dateInfo.ShortDatePattern = "dd/MM/yyyy";
                DateTime date = Convert.ToDateTime(vistDate.Text.Trim(), dateInfo);

                DataTable gridviewTbl = new DataTable();
                DataColumn dc1 = new DataColumn("company_id");
                DataColumn dc2 = new DataColumn("course_id");
                DataColumn dc3 = new DataColumn("branch_id");
                DataColumn dc4 = new DataColumn("student_enrollment");
                DataColumn dc5 = new DataColumn("company_visit_date");
                DataColumn dc6 = new DataColumn("venu");
                DataColumn dc7 = new DataColumn("package");
                DataColumn dc8 = new DataColumn("passout_year");
                gridviewTbl.Columns.Add(dc1);
                gridviewTbl.Columns.Add(dc2);
                gridviewTbl.Columns.Add(dc3);
                gridviewTbl.Columns.Add(dc4);
                gridviewTbl.Columns.Add(dc5);
                gridviewTbl.Columns.Add(dc6);
                gridviewTbl.Columns.Add(dc7);
                gridviewTbl.Columns.Add(dc8);

                if (GridView1 != null && GridView1.Rows.Count != 0)
                {
                    int rowCount = GridView1.Rows.Count;
                    int i = 0;
                    foreach (GridViewRow row in GridView1.Rows)
                    {

                        CheckBox cb = (CheckBox)row.FindControl("Chek");

                        if (cb != null && cb.Checked)
                        {
                            string enrollmetNo = GridView1.Rows[i].Cells[1].Text.ToString();
                            int branchId = Convert.ToInt32(GridView1.DataKeys[0].Value);
                            gridviewTbl.Rows.Add(companyId, courseId, branchId, enrollmetNo, date, venu, package, passoutYear);
                        }
                        i++;
                    }

                    if (gridviewTbl.Rows.Count != 0)
                    {
                        Boolean b = placedStudentManager.SaveSelectdStudent(gridviewTbl);
                        gridNotExist.Text = "Records Successfully inserted";
                    }

                    else
                    {
                        gridNotExist.Text = "Please check the record to be inserted";
                        Btnsave.Visible = true;
                        GridView1.Visible = true;
                    }
                }
                else
                {
                    gridNotExist.Text = "Please Select The Recruited Student, so click the ok button first ";
                }

            }
            else 
            {
                GridView1.Visible = true;
                Btnsave.Visible = true;
            }
        }
        catch (Exception ex)
        {
            COMMON.logger.Error("Error On Button Btnsave_Click:CompanySelected.aspx.cs ", ex);
        }

    }

, теперь я делаю пейджинг, используя следующий код

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {

        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = (DataTable)ViewState["dt"];
        GridView1.DataBind();
        GridView1.Visible = true;
        Btnsave.Visible = true;
       // StringBuilder str=(StringBuilder)ViewState["chk"];
        //foreach (GridViewRow row in GridView1.Rows) 
        //{ 

        //}

    }

, следующим является представление сетки

   <%@ Page Language="C#" MasterPageFile="~/Master Pages/AdminMaster.master" AutoEventWireup="true"
    CodeFile="CompanySelected.aspx.cs" Inherits="Admin_CompanySelected"  Trace="false"  Title="Untitled Page"  EnableEventValidation="false" %>


<asp:Content ID="Content1" ContentPlaceHolderID="cph1" runat="Server">

    <script language="javascript" type="text/javascript">

    function BranchCheckBoxCheck(source, args)
    {
      var chkBoxListId=document.getElementById ('<%=Branch.ClientID%>');
      var chkList=chkBoxListId.getElementsByTagName("input");
      for(var i=0;i<chkList.length;i++)
                {  
                    if(chkList[i].checked)
                    {
                        args.IsValid = true;
                        return;
                    }
                }
              args.IsValid = false;
    }
</script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="Server">
    <div border="1">
        <table id="TABLE1" onclick="return TABLE1_onclick()" align="center">
            <tr>
                <td style="height: 24px">
                    Passout Year*</td>
                <td style="height: 24px">
                    <asp:DropDownList ID="passout" runat="server">
                    </asp:DropDownList>
                    <asp:CustomValidator ID="validateYearForSaveButton" runat="server" ControlToValidate="passout"
                        ErrorMessage="insert passout year" OnServerValidate="validateYearForSaveButton_ServerValidate"
                        ValidationGroup="save"></asp:CustomValidator></td>
                <td style="height: 24px">
                <asp:CustomValidator ID="passoutYearRequire" runat="server" ErrorMessage="Passout Year is Compulsory" ControlToValidate="passout" ValidationGroup="verify" OnServerValidate="passoutYearRequire_ServerValidate">
                </asp:CustomValidator>
                </td>
                <td style="width: 101px; height: 24px;">
                </td>
                <td style="width: 126px; height: 24px">
                </td>
                <td style="height: 24px">
                </td>
                <td style="height: 24px">
                </td>
            </tr>
            <tr>
                <td>
                    Company Name*</td>
                <td>
                    <asp:DropDownList ID="company" runat="server">
                    </asp:DropDownList>
                    </td>
                <td>
                    &nbsp;<asp:CustomValidator ID="selectComapnyForSaveButton" runat="server" ControlToValidate="company"
                        ErrorMessage="Select A Company" OnServerValidate="selectComapnyForSaveButton_ServerValidate"
                        ValidationGroup="save"></asp:CustomValidator></td>
                <td style="width: 101px">
                    Package*</td>
                <td style="width: 126px">
                    <asp:TextBox ID="txtpackage" runat="server" Width="197px"></asp:TextBox></td>

                <td>
                <asp:RequiredFieldValidator ControlToValidate="txtpackage" ValidationGroup="save" ID="packageRequire" runat="server" ErrorMessage="Package Require"></asp:RequiredFieldValidator>
                </td>
                <td>
                    <asp:Button ID="Btnok" runat="server" Text="Ok" Width="43px" OnClick="Btnok_Click" ValidationGroup="verify" /></td>
            </tr>
            <tr>
                <td>
                    Course*</td>
                <td>
                    <asp:UpdatePanel id="update" runat="server">
                        <contenttemplate>
                        <asp:DropDownList ID="course" runat="server" AutoPostBack="True" OnSelectedIndexChanged="course_SelectedIndexChanged">
                        </asp:DropDownList>
                         </contenttemplate>
                    </asp:UpdatePanel><asp:CustomValidator ID="coursenecessaryForSaveButton" runat="server"
                        ControlToValidate="course" ErrorMessage="Select A Course" OnServerValidate="coursenecessaryForSaveButton_ServerValidate"
                        ValidationGroup="save"></asp:CustomValidator></td>
                <td>
                    <asp:CustomValidator ID="courseNecessary" runat="server" ErrorMessage="Select A Course"
                        OnServerValidate="courseNecessary_ServerValidate" ValidationGroup="verify"></asp:CustomValidator></td>
                <td style="width: 101px">
                    Branch Name*</td>
                <td style="width: 126px">
                    <asp:UpdatePanel id="upchak" runat="server">
                        <contenttemplate>
<asp:CheckBoxList id="Branch" runat="server" OnSelectedIndexChanged="Branch_SelectedIndexChanged">
                    </asp:CheckBoxList> 
</contenttemplate>
                    </asp:UpdatePanel>
                </td>
                <td>
                <asp:CustomValidator id="branchRequire" runat="server" ValidationGroup="verify" ClientValidationFunction="BranchCheckBoxCheck" ErrorMessage="Select A Branch"></asp:CustomValidator>
               <asp:CustomValidator id="branchrequireForSaveButton" runat="server" ValidationGroup="save" ClientValidationFunction="BranchCheckBoxCheck" ErrorMessage="Select A Branch"></asp:CustomValidator>
              <%-- <asp:CustomValidator ID="branchNotexist" runat="server" ErrorMessage="No Branch Exist" ValidationGroup="verify"  ControlToValidate="Branch" OnServerValidate="branchNotexist_ServerValidate"></asp:CustomValidator>--%>
                </td>
                <td>
                    <asp:Button ValidationGroup="save" ID="Btnsave" runat="server" Text="Save" OnClick="Btnsave_Click" />
                </td>
            </tr>
            <tr>
                <td>
                    Company Visit Date*</td>
                <td>
                    <asp:TextBox ID="vistDate" runat="server" ></asp:TextBox>
                    </td>
                <td>
                    <asp:RequiredFieldValidator ID="dateForSaveButton" runat="server" ControlToValidate="vistDate"
                        ErrorMessage="Visit Date Require" ValidationGroup="save"></asp:RequiredFieldValidator></td>
                <td style="width: 101px">
                </td>
                <td style="width: 126px">
                    <asp:Label ID="noRecordExistOnOkButton" runat="server" Text="Label" Width="178px"></asp:Label></td>
                <td>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    Venue*
                </td>
                <td>
                    <asp:TextBox ID="txtvenue"  runat="server"></asp:TextBox>
                </td>
                <td colspan="4">
                    <asp:RequiredFieldValidator ID="venRequire" runat="server" ControlToValidate="txtvenue"
                        ErrorMessage="Insert venu" ValidationGroup="save" Width="73px"></asp:RequiredFieldValidator>
                    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;
                    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                    <asp:Label ID="gridNotExist" ForeColor="Red" runat="server" Width="439px"></asp:Label></td>
                <td>
                    </td>
            </tr>
            <tr>
                <td colspan="5" style="height: 16px">
                </td>
            </tr>
            <tr>
                <td colspan="5">



<asp:GridView id="GridView1" AllowSorting="true" EnableViewState="true" AutoGenerateColumns="false" runat="server" AllowPaging="True"  DataKeyNames="branch_id, default_check, student_id"   OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="2">

<Columns>
<asp:TemplateField HeaderText="Select Student">
<ItemTemplate>
<asp:CheckBox id="Chek"  runat="server" Text="select" ></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Enrollment No." DataField="enrollment_no" />
<asp:BoundField HeaderText="Course Name" DataField="course_name"/>
<asp:BoundField  HeaderText="Branch Name"  DataField="branch_name"/>
<asp:BoundField HeaderText="Email Id" DataField="email" />
<asp:BoundField  HeaderText="Mobile" DataField="mobile"/>
<asp:BoundField HeaderText="Name"  DataField="first_name"/>
<asp:BoundField  HeaderText="Surname" DataField="last_name" />
</Columns>


</asp:GridView> 
                </td>
            </tr>
  <tr>
  <td>
  </td>
  </tr>
        </table>
    </div>
    <br />
    <br />
    <br />
    <br />
    &nbsp;&nbsp;
    <br />
    <br />
    <br />
</asp:Content>

, теперь я хочу сделать пейджинг без потери состояния флажка и хочу сохранить строку выбранного флажка в База данных на кнопку Сохранить Нажмите, как добиться этого, пожалуйста, дайте мне знать. Я использую платформу dot net 2.0 ...

@PhilPursglove: - Мое решение похоже на это

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ Response.Write(GridView1.PageIndex.ToString()); 
int d = GridView1.PageCount; bool[] values = new bool[GridView1.PageSize];
 CheckBox chb; 
for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
chb = (CheckBox)GridView1.Rows[i].FindControl("Chek"); 
if (chb != null) 
{
 values[i] = chb.Checked; 
} 
}
Session["page" + GridView1.PageIndex] = values;
GridView1.PageIndex = e.NewPageIndex; 
GridView1.DataSource = (DataTable)ViewState["dt"]; 
GridView1.DataBind(); GridView1.Visible = true; Btnsave.Visible = true; 
} 

protected void GridView1_PreRender(object sender, EventArgs e) 
{ 
if (Session["page" + GridView1.PageIndex] != null) 
{ CheckBox chb; bool[] values = (bool[])Session["page" + GridView1.PageIndex]; 
for (int i = 0; i < GridView1.Rows.Count; i++) 
{ chb = (CheckBox)GridView1.Rows[i].FindControl("Chek"); 
chb.Checked = values[i]; 
}
 }
 }

, теперь я хочу нажать кнопку сохранения, чтобы сохранить выбранные значения строки chkbox в базе данных

1
задан NoviceToDotNet 3 September 2010 в 06:34
поделиться