• 0
hassan-cs

مشكلة في checkbox في gridview و updatepanel

سؤال

السلام عليكم ورحمة الله وبركاته ..

 

عندي مشكله بسيطه ..ومتاكد ان حلها بسيط جدا ..بس حايس لي كم يوم ومالقيت الحل ..ياليت تفيدوني :)

 

 

قمت بنقل الصفوف من Gridview الى GridView جديده وهي عن طريق وضح على صح على Checkbox !

 

المشكله ..اني لما اسوي checked للـ checkbox مايضهر لي gridView الجديده الا لما اسوي تحديث للصفحه !!

 

ابي اذا حطيت علامة صح ..فورا يظهر لي Gridview الجديده !!

 

كود HTML 

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="HomePage.aspx.cs" Inherits="Timetabling.HomePage" EnableEventValidation="False" %><asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">    <asp:ScriptManager ID="ScriptManager1" runat="server" />                                                <div>المستوى : <asp:DropDownList ID="ddlLevel" runat="server"/><br/> المادة: <asp:DropDownList ID="ddlCourse" runat="server" AutoPostBack="true"/><br/><asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" /> </div><ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="ddlLevel" Category="Level" PromptText="أختر المستوى" ServicePath="WebService.asmx" ServiceMethod="getLevels"></ajaxToolkit:CascadingDropDown><ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" ParentControlID="ddlLevel" TargetControlID="ddlCourse" Category="Course" PromptText="أختر المادة" ServicePath="WebService.asmx" ServiceMethod="getCoursesByLevel"></ajaxToolkit:CascadingDropDown>    <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">    <ContentTemplate>         <asp:GridView ID="GridViewAll" runat="server"   DataSourceID="ObjectDataSource1" onrowdatabound="GridView1_RowDataBound" >        <Columns  >                        <asp:TemplateField  >                            <HeaderTemplate>                                 <asp:CheckBox ID="CheckBoxAll" runat="server"  OnCheckedChanged="CheckBox_CheckChanged" onclick="CheckAll(this)" />                            </HeaderTemplate>                            <ItemTemplate  >                                <asp:CheckBox ID="CheckBoxRow"  runat="server"  OnCheckedChanged="CheckBox_CheckChanged" onclick = "Check_Click(this)" />                            </ItemTemplate>                        </asp:TemplateField>                  </Columns>    </asp:GridView>    </ContentTemplate>    <Triggers>        <asp:AsyncPostBackTrigger controlid="ddlCourse" EventName="SelectedIndexChanged" />    </Triggers></asp:UpdatePanel>       <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"         OldValuesParameterFormatString="original_{0}" SelectMethod="getSectionsDetails"         TypeName="Timetabling.WebService">        <SelectParameters>            <asp:ControlParameter ControlID="ddlCourse" DefaultValue="0" Name="id"                 PropertyName="SelectedValue" Type="Int32" />        </SelectParameters>    </asp:ObjectDataSource>       <asp:UpdatePanel runat="server" id="UpdatePanel2" updatemode="Conditional">      <ContentTemplate>         <asp:GridView ID="GridViewSelected" runat="server" > </asp:GridView>      </ContentTemplate>      <Triggers>          <asp:PostBackTrigger ControlID="GridViewAll" />      </Triggers>    </asp:UpdatePanel>   </asp:Content>

 

 

كود 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 AjaxControlToolkit;namespace Timetabling{       public partial class HomePage : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                BindGridViewSelected();            }        }        protected void Button1_Click(object sender, EventArgs e)        {                      }        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)        {            e.Row.Cells[1].Visible = false;            e.Row.Cells[6].Text = Server.HtmlDecode(e.Row.Cells[6].Text);            e.Row.Cells[7].Text = Server.HtmlDecode(e.Row.Cells[7].Text);                    }        protected void GridViewAll_PageIndexChanged(object sender, GridViewRowEventArgs e)        {        }        protected void CheckBox_CheckChanged(Object sender, EventArgs e)        {                        GridViewSelected_GetData();            BindGridViewSelected();        }        private void GridViewSelected_GetData()        {            DataTable Details;            if (ViewState["SelectedRecords"] != null)                Details = (DataTable)ViewState["SelectedRecords"];            else                Details = CreateDataTable();            CheckBox chkAll = (CheckBox)GridViewAll.HeaderRow.Cells[0].FindControl("CheckBoxAll");            for (int i = 0; i < GridViewAll.Rows.Count; i++)            {                if (chkAll.Checked)                {                    Details = AddRow(GridViewAll.Rows[i], Details);                                                            }                else                {                    CheckBox chk = (CheckBox)GridViewAll.Rows[i].Cells[0].FindControl("CheckBoxRow");                    if (chk.Checked)                    {                        Details = AddRow(GridViewAll.Rows[i], Details);                    }                    else                    {                        Details = RemoveRow(GridViewAll.Rows[i], Details);                    }                }            }            ViewState["SelectedRecords"] = Details;        }                private DataTable CreateDataTable()        {            DataTable Details = new DataTable();            Details.Columns.Add("Sid");            Details.Columns.Add("Level");            Details.Columns.Add("Course");            Details.Columns.Add("Name");            Details.Columns.Add("Section");            Details.Columns.Add("Days");            Details.Columns.Add("Times");           return Details;        }        private DataTable AddRow(GridViewRow gvRow, DataTable Details)        {            DataRow[] dr = Details.Select("Sid = '" + gvRow.Cells[1].Text + "'");            if (dr.Length <= 0)            {                Details.Rows.Add();                Details.Rows[Details.Rows.Count - 1]["Sid"] = gvRow.Cells[1].Text;                Details.Rows[Details.Rows.Count - 1]["Level"] = gvRow.Cells[2].Text;                Details.Rows[Details.Rows.Count - 1]["Course"] = gvRow.Cells[3].Text;                Details.Rows[Details.Rows.Count - 1]["Name"] = gvRow.Cells[4].Text;                Details.Rows[Details.Rows.Count - 1]["Section"] = gvRow.Cells[5].Text;                Details.Rows[Details.Rows.Count - 1]["Days"] = gvRow.Cells[6].Text;                Details.Rows[Details.Rows.Count - 1]["Times"] = gvRow.Cells[7].Text;                Details.AcceptChanges();            }            return Details;        }        private DataTable RemoveRow(GridViewRow gvRow, DataTable Details)        {            DataRow[] dr = Details.Select("Sid = '" + gvRow.Cells[1].Text + "'");            if (dr.Length > 0)            {                Details.Rows.Remove(dr[0]);                Details.AcceptChanges();            }            return Details;        }        private void BindGridViewSelected()        {            DataTable dt = (DataTable)ViewState["SelectedRecords"];            GridViewSelected.DataSource = dt;            GridViewSelected.DataBind();            ScriptManager.GetCurrent(this).RegisterPostBackControl(this);         }    }}

 

 

 

 

وشكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

خاصيةAutoPostBack

     <asp:CheckBox ID="CheckBoxRow"  runat="server"                                      OnCheckedChanged="CheckBox_CheckChanged" onclick = "Check_Click(this)"                                     AutoPostBack="True" />
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

خاصيةAutoPostBack

     <asp:CheckBox ID="CheckBoxRow"  runat="server"                                      OnCheckedChanged="CheckBox_CheckChanged" onclick = "Check_Click(this)"                                     AutoPostBack="True" />

 

يعطيك العافيه ..شكرا جزيلاً ..غابت عني فعلاً :)

الي الزوار الى هذا الموضوع فقط للفائده ..:)

 

عدلت الكود الى هذا بحيث انه مايسوي تحديث للصفحه بالمره واضفت الى الاداه autoPastback = true

<asp:UpdatePanel runat="server" id="UpdatePanel2" updatemode="Conditional">      <ContentTemplate>         <asp:GridView ID="GridViewSelected" runat="server" > </asp:GridView>      </ContentTemplate>      <Triggers>          <asp:AsyncPostBackTrigger ControlID="GridViewAll" />      </Triggers>    </asp:UpdatePanel>
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .