I have a websplitter with 2 panes. Each pane includes an UpdatePanel. Inside each UpdatePanel is a WebDatagrid. The left WDG has selection/activation enabled and I want to reload the WDG on the right on the RowSelectionChanged event.
The target WDG updates when I use a button to fire the update, but not when it is the RowSelectionChanged event. Any help would be appreciated. Sample code is below:
Markup:
<asp:ScriptManager ID="scrptManager" runat=server> </asp:ScriptManager> <ig:WebSplitter ID="WebSplitter1" runat="server" Height="800px" Width="100%"> <panes> <ig:SplitterPane runat="server" Size="20%" > <Template> <asp:UpdatePanel ID="updSections" runat=server> <ContentTemplate> <asp:Button ID="btnTest" runat=server Text="Test" onclick="btnTest_Click" /> <ig:WebDataGrid ID="wdgSections" runat="server" AutoGenerateColumns="False" Height="400px" Width="100%" DataKeyFields="Number" EnableAjax=true ShowHeader="False" style="direction: ltr" OnRowSelectionChanged="wdgSections_RowSelectionChanged" > <Columns> <ig:BoundDataField DataFieldName="Number" Key="Number" Width="100%" > <Header Text="Number" /> </ig:BoundDataField> </Columns> <Behaviors > <ig:Activation Enabled="true" /> <ig:Selection Enabled ="true" CellClickAction="Row" RowSelectType="Single" CellSelectType="None" > <AutoPostBackFlags RowSelectionChanged="True" /> </ig:Selection> </Behaviors> </ig:WebDataGrid> </ContentTemplate> </asp:UpdatePanel> </Template> </ig:SplitterPane> <ig:SplitterPane runat="server" Size="80%" > <Template> <asp:UpdatePanel ID="updTest" runat=server> <ContentTemplate> <asp:Label ID="lblTest" runat=server text="0"></asp:Label> <ig:WebDataGrid ID="wdgQuestions" runat="server" AutoGenerateColumns="False" Height="108px" Width="100%" DataKeyFields="Number" EnableDataViewState="True" EnableAjax="True" style="direction: ltr" > <Columns> <ig:BoundDataField DataFieldName="Number" Key="Number" Width="100%" > <Header Text="Number" /> </ig:BoundDataField> </Columns> <Behaviors > <ig:Activation Enabled="true" /> <ig:Selection Enabled ="true" CellClickAction="Row" RowSelectType="Single" CellSelectType="None" > <AutoPostBackFlags RowSelectionChanged="True" /> </ig:Selection> </Behaviors> </ig:WebDataGrid> </ContentTemplate> </asp:UpdatePanel> </Template> </ig:SplitterPane> </panes> </ig:WebSplitter>
Code Behind:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Collections;
namespace FundsDecsions{ public partial class Experiment : System.Web.UI.Page {
List<number> numbers;
protected void Page_Init(object sender, EventArgs e) { AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); trigger.EventName = "RowSelectionChanged"; trigger.ControlID = wdgSections.UniqueID.ToString(); updTest.Triggers.Add(trigger);
trigger = new AsyncPostBackTrigger(); trigger.EventName = "Click"; trigger.ControlID = btnTest.UniqueID.ToString(); updTest.Triggers.Add(trigger); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { List<number> numbers2 = new List<number>(); numbers2.Add(new number(1)); numbers2.Add(new number(2)); numbers2.Add(new number(3));
wdgSections.DataSource = numbers2;
Session["numbers2"] = numbers2;
numbers = new List<number>(); numbers.Add(new number(1));
wdgQuestions.DataSource = numbers;
Session["numbers"] = numbers; } else { numbers = (List<number>)Session["numbers"];
wdgSections.DataSource = (List<number>)Session["numbers2"]; } }
protected void wdgSections_RowSelectionChanged(object sender, Infragistics.Web.UI.GridControls.SelectedRowEventArgs e) { lblTest.Text = (Convert.ToInt32(lblTest.Text) + 1).ToString(); numbers.Add(new number((Convert.ToInt32(lblTest.Text) + 1)));
wdgQuestions.DataSource = numbers; }
protected void btnTest_Click(object sender, EventArgs e) { lblTest.Text = (Convert.ToInt32(lblTest.Text) + 1).ToString(); numbers.Add(new number((Convert.ToInt32(lblTest.Text) + 1)));
wdgQuestions.DataSource = numbers; } }
public class number {
private int _number;
public int Number { get { return _number; } set { _number = value;
} }
public number() { }
public number(int num) { this.Number = num;
} }}
I figured it out. If i set EnableAjax = "False" on my source grid then it works properly