السلام عليكم ورحمة الله وبركاته ..
عندي مشكله بسيطه ..ومتاكد ان حلها بسيط جدا ..بس حايس لي كم يوم ومالقيت الحل ..ياليت تفيدوني :)
قمت بنقل الصفوف من 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); } }}
وشكرا لكم