Hello I have a problem with the NeedDataSource event of the radlistview. I tried several things but it will only bind once in the initial pageload. I also placed a radgrid on the form to see if the code and/or events are correct and they are because the radgrid is behaving as expected (click the pager or edit button and the needdatasource event is fired). What could this be? Only thing I could see in reflector is a slightly different implementation of the event if i compare the listview with the grid.
To overcome all the details i created a new sample form as below with the same problem.
ASPX:
CODEBEHIND
And the baseclass
Cheers
To overcome all the details i created a new sample form as below with the same problem.
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Artikelgroepen.aspx.cs" Inherits="Drumis.ECommerce.Website.Admin.Content.Artikelgroepen" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <telerik:radscriptmanager id="RadScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <asp:ScriptReference Path="~/scripts/script.js" /> </Scripts> </telerik:radscriptmanager> <div> <telerik:RadWindow runat="server" Width="750px" Height="560px" VisibleStatusbar="false" AutoSize="true" NavigateUrl="~/FileExplorer/Explorer.aspx" ID="ExplorerWindow" Modal="true" Behaviors="Close,Move"> </telerik:RadWindow> <telerik:radcodeblock runat="server" ID="codeblock1"> <script type="text/javascript"> function OpenFileExplorerDialog() { var wnd = $find("<%= ExplorerWindow.ClientID %>"); wnd.show(); } function ChangeRows() { var rt = document.getElementById('<%= ActiveRelatiesText.ClientID %>'); var ht = document.getElementById('<%= RowText.ClientID %>'); rt.rows = ht.value; } </script> </telerik:radcodeblock> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" /> <div id="ConfigPanel" style="margin:5px;padding:5px;border: 1px solid black;"> <table width="100%" cellpadding="3" cellspacing="0"> <tr> <td> <asp:Label ID="LanguageLabel" runat="server" meta:ResourceKey="LanguageLabel">Selecteer een taal:</asp:Label> </td> <td> <telerik:RadComboBox ID="LanguageCbx" runat="server" AutoPostBack="True"></telerik:RadComboBox> </td> </tr> <tr> <td> <asp:Label ID="RelatieHeaderLabel" runat="server" meta:ResourceKey="RelatieHeaderLabel">Selecteer een relatie</asp:Label> </td> <td> <asp:Label ID="ActiveRelatieHeaderLabel" runat="server" meta:ResourceKey="ActiveRelatieHeaderLabel">Gekoppelde relaties voor geslecteerde artikelgroep</asp:Label> </td> </tr> <tr> <td valign="top"> <telerik:RadComboBox ID="RelatiesCbx" runat="server" AppendDataBoundItems="true" AutoPostBack="true"> <Items> <telerik:RadComboBoxItem Text=" Selecteer " Value="-1" /> </Items> </telerik:RadComboBox> </td> <td> <asp:TextBox ID="ActiveRelatiesText" runat="server" Rows="1" Columns="60" TextMode="MultiLine" ReadOnly="true" onfocus="ChangeRows();" onblur="this.rows='1';"></asp:TextBox> <asp:HiddenField ID="RowText" runat="server" Value="90" /> </td> </tr> </table> </div> <telerik:RadListView ID="GroepenLvw" runat="server" AllowPaging="True" ItemPlaceholderID="GroepItemContainer"> <LayoutTemplate> <fieldset style="width: 700px;"> <legend>Artikelgroepen</legend> <table cellpadding="0" cellspacing="0" style="width: 700px;"> <tr> <td> <asp:Panel ID="GroepItemContainer" runat="server" /> </td> </tr> <tr> <td> <telerik:RadDataPager ID="GroepPager" runat="server" PagedControlID="GroepenLvw" PageSize="6"> <Fields> <telerik:RadDataPagerButtonField FieldType="FirstPrev" /> <telerik:RadDataPagerButtonField FieldType="Numeric" /> <telerik:RadDataPagerButtonField FieldType="NextLast" /> </Fields> </telerik:RadDataPager> </td> </tr> </table> </fieldset> </LayoutTemplate> <ItemTemplate> <fieldset style="float: left; width: 226px; height: 200px;"> <table cellpadding="2" cellspacing="0" style="height: 100%;"> <tr> <td style="width: 20%;"> <asp:label ID="MenuTekstLabel" runat="server">Headertekst</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <asp:Label ID="NormalTekstText" runat="server" Text='<%# Eval("strNormalTekst") %>'></asp:Label> </td> </tr> <tr> <td> <asp:label ID="MenuIconLabel" runat="server">Menu icoon</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <telerik:RadBinaryImage id="IconRbi" runat="server" AutoAdjustImageControlSize="true" ResizeMode="None" ImageAlign="Middle" BorderWidth="0" ImageUrl='<%# ResolveUrl(String.Concat("~/MenuIcons/",App.Configuration.MenuIconHeight, "x", App.Configuration.MenuIconWidth, ".", Eval("StrIconPath"))) %>' /> </td> </tr> <tr> <td> <asp:label ID="MenuvoettekstLabel" runat="server">Menu voettekst</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <asp:label ID="DetailTekstText" runat="server" Text='<%# Eval("StrDetailTekst") %>' ></asp:label> </td> </tr> <tr> <td colspan="2"> <asp:ImageButton ID="Button1" runat="server" CommandName="Edit" ImageUrl="~/Images/Editor.png" /> </td> </tr> </table> </fieldset> </ItemTemplate> <EditItemTemplate> <fieldset style="float: left; width: 226px; height: 240px;"> <table cellpadding="2" cellspacing="0" style="height: 100%;"> <tr> <td style="width: 20%;"> <asp:label ID="MenuTekstLabel" runat="server">Headertekst</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <asp:TextBox ID="NormalTekstText" runat="server" Text='<%# Bind("strNormalTekst") %>' width="75%"></asp:TextBox> </td> </tr> <tr> <td> <asp:label ID="MenuIconLabel" runat="server">Menu icoon</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <asp:TextBox ID="ImagePathText" runat="server" Text='<%# Bind("StrIconPath") %>' ></asp:TextBox> <asp:Button ID="PreviewImage" runat="server" text="Browse" CssClass="art-button" OnClientClick="OpenFileExplorerDialog(); return false;" /> <telerik:RadBinaryImage id="IconRbi" runat="server" AutoAdjustImageControlSize="true" ResizeMode="None" ImageAlign="Middle" BorderWidth="0" ImageUrl='<%# ResolveUrl(String.Concat("~/MenuIcons/",App.Configuration.MenuIconHeight, "x", App.Configuration.MenuIconWidth, ".", Eval("StrIconPath"))) %>' /> </td> </tr> <tr> <td> <asp:label ID="MenuvoettekstLabel" runat="server">Menu voettekst</asp:label> </td> <td style="width: 80%; padding-left: 5px;"> <telerik:RadEditor ID="DetailTekstText" runat="server" EditModes="Html" ToolbarMode="ShowOnFocus" AutoResizeHeight="false" Height="150px" Width="98%" ToolsWidth="200px" Content='<%# Bind("StrDetailTekst") %>'> </telerik:RadEditor> </td> </tr> <tr> <td colspan="2"> <asp:ImageButton ID="Button1" runat="server" CommandName="Update" Text="Update" ImageUrl="~/Imgages/Update.gif" /> <asp:ImageButton ID="Button2" runat="server" CommandName="Cancel" Text="Cancel" ImageUrl="~/Imgages/Cancel.gif" /> </td> </tr> </table> </fieldset> </EditItemTemplate> </telerik:RadListView> <telerik:RadGrid ID="GroepGrid" runat="server" AllowPaging="True" PageSize="2" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" GridLines="None"></telerik:RadGrid> </div> </form> </body> </html> CODEBEHIND
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Drumis.ECommerce.WebLibrary.Bases; using Drumis.ECommerce.Model; using Drumis.Licentie.Configuration; namespace Drumis.ECommerce.Website.Admin.Content { public partial class Artikelgroepen : BasePage { [Serializable()] public class ArtikelGroepItem { int _iDArtikelGroep; int _iDArtikelGroepTekst; string _strDetailTekst; string _strGeneralTekst; string _strIconPath; string _strLocaleId; string _strNormalTekst; public ArtikelGroepItem(TblCSArtikelGroepTeksten item) { _iDArtikelGroep = item.IDArtikelGroep; _iDArtikelGroepTekst = item.IDArtikelGroepTekst; _strDetailTekst = item.StrDetailTekst; _strGeneralTekst = item.StrGeneralTekst; _strIconPath = item.StrIconPath; _strLocaleId = item.StrLocaleId; _strNormalTekst = item.StrNormalTekst; } public int IDArtikelGroep { get { return _iDArtikelGroep; } set { _iDArtikelGroep = value; } } public int IDArtikelGroepTekst { get { return _iDArtikelGroepTekst; } set { _iDArtikelGroepTekst = value; } } public string StrDetailTekst { get { return _strDetailTekst; } set { _strDetailTekst = value; } } public string StrGeneralTekst { get { return _strGeneralTekst; } set { _strGeneralTekst = value; } } public string StrIconPath { get { return _strIconPath; } set { _strIconPath = value; } } public string StrLocaleId { get { return _strLocaleId; } set { _strLocaleId = value; } } public string StrNormalTekst { get { return _strNormalTekst; } set { _strNormalTekst = value; } } } List<ArtikelGroepItem> GroepItems { get { List<int> artikelgroepIds = new List<int>(); IQueryable<TVWD4WCSArtikelGroepenMultiLingual> col = null; if (RelatiesCbx.SelectedValue != "-1") { int iOut = 0; int.TryParse(RelatiesCbx.SelectedValue, out iOut); List<int> groepenRelatie = context.TVWD4WCSArtikelGroepenPerRelaties.Where(s => s.IDRelatie.Equals(0) || s.IDRelatie.Equals(iOut)) .Select(s => s.GroupId).ToList(); artikelgroepIds = context.TVWD4WCSArtikelGroepenMultiLinguals.Where(s => (string.IsNullOrEmpty(s.StrLocaleId) || s.StrLocaleId.ToLower().Equals("nl")) && groepenRelatie.Contains(s.IDArtikelGroep)) .Select(s => s.IDArtikelGroep).ToList(); } else { artikelgroepIds = context.TVWD4WCSArtikelGroepenMultiLinguals.Where(s => string.IsNullOrEmpty(s.StrLocaleId) || s.StrLocaleId.ToLower().Equals("nl")) .Select(s => s.IDArtikelGroep).ToList(); } IQueryable<TblCSArtikelGroepTeksten> result = context.TblCSArtikelGroepTekstens.Where(s => artikelgroepIds.Contains(s.IDArtikelGroep) && s.StrLocaleId.ToLower().Equals("nl")) .OrderBy(s => s.StrNormalTekst); List<ArtikelGroepItem> agResultItems = new List<ArtikelGroepItem>(); foreach (var item in result) { agResultItems.Add(new ArtikelGroepItem(item)); } return agResultItems; } } protected override void OnInit(EventArgs e) { base.OnInit(e); GroepenLvw.NeedDataSource += (s, args) => { GroepenLvw.DataSource = GroepItems; }; GroepGrid.NeedDataSource += (s, args) => { GroepGrid.DataSource = GroepItems; }; } protected override D4WOptions[] SetValidateOptions() { return new D4WOptions[] { D4WOptions.X_OPTNR_INTERNET }; } } }And the baseclass
public class BasePage : Page { public const string WidthUnit = "px"; public BasePage(); public virtual string ContentPanelWidthPixel { get; } public D4WData_EntityDiagrams context { get; } public InsadD4wUser D4wUser { get; } public ErrorDisplay ErrorDisplayCtrl { get; } public virtual bool IsHomePage { get; } public NavigationMenuItemList menuItemCollection { get; set; } public UserControl SidebarInstance { get; } public event EventHandler<MessageToDisplayArguments> MessageToDisplay; protected void BasePage_MessageToDisplay(object sender, MessageToDisplayArguments e); protected override void InitializeCulture(); protected bool IsNavigation(); protected override void OnInit(EventArgs e); protected void RaiseMessageToDisplay(string message, MessageType type); protected override void Render(HtmlTextWriter writer); public void SetAjaxReference(Control trigger, Control updated); public virtual void SetMessageHandlers(); public void SetUserLocale(); public void SetUserLocale(string CurrencySymbol, bool SetUiCulture); public void SetUserLocale(string LCID, string CurrencySymbol, bool SetUiCulture); protected virtual D4WOptions[] SetValidateOptions(); }Cheers