Hi There,
Simple scenario, probably seen multiple times but couldn't find a solution for my case.
On my aspx page, I'm loading RadTabStrips along with RadMultiPage. Both are being defined from my DB, very basic, so far it's ok.
Within each pageView, I'm dynamically creating RadGrids, bound to OnNeedDataSource and OnItemCommand.
I tried multiple methods and the current one, generates the PageViews (embedding the grids) on the OnTabDataBound event from the RadTabStrip object.
Everything works like a charm until I click on some command from my Grids (refresh / export / sort whatever). When I click on any command, all of my page views disappear and I need to refresh the whole page to get them back.
How come my OnItemCommand handler is never called while OnNeedDataSource works fine (at least when it loads)? I tried to ajaxified the postback but it's not working any better. Anyone would have some recommendation ?
Cheers
Chris
Simple right ?
01.<div id="dataProcessingContent">02. <telerik:RadTabStrip ID="rtsTabs" runat="server" MultiPageID="rmpTables" SelectedIndex="0" DataSourceID="dsPageViews" DataTextField="Name" DataFieldID="ID" DataValueField="ID" OnTabDataBound="rtsTabs_TabDataBound">03. </telerik:RadTabStrip>04. <telerik:RadMultiPage ID="rmpTables" runat="server" SelectedIndex="0">05. </telerik:RadMultiPage>06.</div>07.<asp:SqlDataSource ID="dsPageViews" runat="server" SelectCommand="P_GetSomeData" SelectCommandType="StoredProcedure" ConnectionString="<% $ConnectionStrings:MyDB %>">08. <SelectParameters>09. <asp:SessionParameter SessionField="SID" DbType="Int32" DefaultValue="0" Name="sid" />10. </SelectParameters>11.</asp:SqlDataSource>
My code behind:
001.protected void rtsTabs_TabDataBound(object sender, RadTabStripEventArgs e)002.{003. try004. {005. var pv = new RadPageView();006. rmpTables.PageViews.Add(pv);007. var sdg = new SummaryDataGrid((int)Session["SID"], (string)Session["StudyName"], int.Parse(e.Tab.Value), e.Tab.Text);008. sdg.InstantiateIn(pv);009. 010. }011. catch (Exception ex)012. {013. throw ex;014. }015.}016. 017.private class SummaryDataGrid : ITemplate018.{019. private int _sid;020. private string _studyName;021. private int _effortId;022. private string _effortName;023. private RadGrid _grid;024. 025. public SummaryDataGrid()026. { }027. public SummaryDataGrid(int sid, string studyName, int effortId, string effortName)028. {029. this._sid = sid;030. this._effortId = effortId;031. this._effortName = effortName;032. this._studyName = studyName;033. }034. 035. public void InstantiateIn(Control container)036. {037. _grid = new RadGrid();038. _grid.ID = $"dataGrid_{Guid.NewGuid()}";039. _grid.AllowMultiRowSelection = true;040. _grid.AllowSorting = true;041. _grid.AutoGenerateColumns = true;042. _grid.AllowFilteringByColumn = false;043. 044. _grid.MasterTableView.TableLayout = GridTableLayout.Auto;045. _grid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;046. _grid.MasterTableView.CommandItemSettings.ShowExportToCsvButton = true;047. _grid.MasterTableView.CommandItemSettings.ShowExportToExcelButton = true;048. _grid.MasterTableView.CommandItemSettings.ShowExportToPdfButton = true;049. _grid.MasterTableView.CommandItemSettings.ShowRefreshButton = true;050. _grid.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = false;051. _grid.MasterTableView.CommandItemSettings.ShowCancelChangesButton = false;052. 053. _grid.ExportSettings.HideStructureColumns = false;054. _grid.ExportSettings.IgnorePaging = true;055. _grid.ExportSettings.OpenInNewWindow = true;056. _grid.ExportSettings.ExportOnlyData = true;057. _grid.ExportSettings.FileName = $"Data Summary_{_studyName}_{_effortName}_{DateTime.Now.ToString("dd-MMM-yyyy")}";058. _grid.ExportSettings.SuppressColumnDataFormatStrings = true;059. _grid.ExportSettings.Excel.Format = GridExcelExportFormat.Biff;060. _grid.ExportSettings.Csv.ColumnDelimiter = GridCsvDelimiter.Semicolon;061. _grid.ExportSettings.Csv.EncloseDataWithQuotes = true;062. _grid.ExportSettings.Csv.FileExtension = "csv";063. _grid.ExportSettings.Pdf.Creator = "Me";064. _grid.ExportSettings.Pdf.Author = "Me";065. 066. _grid.ClientSettings.EnableRowHoverStyle = true;067. _grid.ClientSettings.Scrolling.AllowScroll = true;068. _grid.ClientSettings.Scrolling.UseStaticHeaders = true;069. _grid.ClientSettings.Selecting.AllowRowSelect = true;070. _grid.ClientSettings.Resizing.AllowResizeToFit = true;071. _grid.ClientSettings.AllowColumnsReorder = true;072. _grid.ClientSettings.ReorderColumnsOnClient = true;073. _grid.ClientSettings.ColumnsReorderMethod = GridClientSettings.GridColumnsReorderMethod.Reorder;074. _grid.ClientSettings.AllowColumnHide = true;075. _grid.ClientSettings.ClientEvents.OnDataBound = "gridDataBound";076. 077. _grid.NeedDataSource += Grid_NeedDataSource;078. _grid.ItemCommand += Grid_ItemCommand;079. 080. container.Controls.Add(_grid);081. }082. 083. private void Grid_ItemCommand(object sender, GridCommandEventArgs e)084. {085. try086. {087. switch (e.CommandName)088. {089. case "Refresh":090. break;091. }092. }093. catch (Exception ex)094. {095. ex.GetDetails(Assembly.GetExecutingAssembly(), MethodBase.GetCurrentMethod().Name, MethodBase.GetCurrentMethod().DeclaringType.Name, _sid);096. throw ex;097. }098. }099. 100. private void Grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)101. {102. try103. {104. var sda = new SqlDataAdapter("P_GetMyOtherData", new SqlConnection(MyConnectionString);105. sda.SelectCommand.CommandType = CommandType.StoredProcedure;106. sda.SelectCommand.Parameters.AddWithValue("@sid", _sid);107. sda.SelectCommand.Parameters.AddWithValue("@effortID", _effortId);108. 109. sda.SelectCommand.Connection.Open();110. if (sda.SelectCommand.Connection.State != ConnectionState.Open)111. throw new Exception($"Woopsy... Something failed while trying to connect to DB");112. 113. var data = new DataTable(this._effortName);114. try115. {116. sda.Fill(data);117. }118. finally119. {120. sda.SelectCommand.Connection.Close();121. }122. 123. _grid.DataSource = data;124. }125. catch (Exception ex)126. {127. _grid.DataSource = null;128. ex.GetDetails(Assembly.GetExecutingAssembly(), MethodBase.GetCurrentMethod().Name, MethodBase.GetCurrentMethod().DeclaringType.Name, _sid);129. throw ex;130. }131. }132.}
Grid_ItemCommand is never called .... ????