الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلقمُجاب
بدأه hassan-cs في 13 فبراير 2013 · 2 رد · 1,633 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

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

 

 

قمت بنقل الصفوف من 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, Details);                                                            }                else                {                    CheckBox chk = (CheckBox)GridViewAll.Rows.Cells[0].FindControl("CheckBoxRow");                    if (chk.Checked)                    {                        Details = AddRow(GridViewAll.Rows, Details);                    }                    else                    {                        Details = RemoveRow(GridViewAll.Rows, 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);         }    }}

 

 

 

 

وشكرا لكم

#2 أفضل إجابة

خاصيةAutoPostBack

     <asp:CheckBox ID="CheckBoxRow"  runat="server"  
                                    OnCheckedChanged="CheckBox_CheckChanged" onclick = "Check_Click(this)" 
                                    AutoPostBack="True" />
1
#3
KARIMSOFT كتب:

خاصية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>

هذا الموضوع مغلق.

مواضيع مشابهة