Error in ajax with grid and dropdown

4 posts, 1 answers
  1. Hans
    Hans avatar
    49 posts
    Member since:
    Jul 2010

    Posted 04 May 2013 Link to this post

    Hi
    In Sharepoint 2010 I  created a web part with a dropdown that contain a list of the month and based on the selection some data is shown in a grid. If I don't ajaxify it, it works well. When I work with ajax , if I select first time imediately after the page is shown a month with no data, it show the grid empty, when I select back to a month that has data I get this error
    "
    Microsoft JScript runtime error: Sys.ArgumentUndefinedException: Value cannot be undefined.
    Parameter name: type
    ".

    If imediately after the page is shown I select a month with data and then a month without data and then a month with data i have no erorrs.

    How I can fix the error ?

    Thank you !
    Hans

    The code is here:
    <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
    <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Import Namespace="Microsoft.SharePoint" %>
    <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebPart_EstimatedFinalCostsUserControl.ascx.cs" Inherits="Project_EstimatedFinalCosts.WebPart_EstimatedFinalCosts.WebPart_EstimatedFinalCostsUserControl" %>
    <%@ Register Assembly="Telerik.Web.UI, Version=2013.1.417.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
        Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
     
     
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"
        DefaultLoadingPanelID="RadAjaxLoadingPanel1" >
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadGrid1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="RadDropDownYears">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="RadDropDownMonths">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="RadDropDownJobMaster">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
    </telerik:RadAjaxManager>
    <telerik:RadAjaxLoadingPanel runat="server" ID="RadAjaxLoadingPanel1"  Skin="WebBlue" />
     
     
    <asp:Panel ID="Panel1" runat="server">
         
     <table style="width: 500px;" >
          
            <tr>
                <td>
                    Current
                </td>
                <td>
                    <telerik:RadDropDownList ID="RadDropDownYears" runat="server" Skin="WebBlue" AutoPostBack="True"  onselectedindexchanged="RadDropDownYears_SelectedIndexChanged">
                    </telerik:RadDropDownList>
                </td>
                <td>
                    <telerik:RadDropDownList ID="RadDropDownMonths" runat="server" Skin="WebBlue" AutoPostBack="True"  onselectedindexchanged="RadDropDownMonths_SelectedIndexChanged">
                    </telerik:RadDropDownList>
                </td>
                <td>
                    <telerik:RadDropDownList ID="RadDropDownJobMaster" runat="server" Skin="WebBlue" AutoPostBack="True"  onselectedindexchanged="RadDropDownJobMaster_SelectedIndexChanged" DropDownWidth="500px" DropDownHeight="200px" EnableVirtualScrolling="true">
                     <ItemTemplate>
                     <table>
        
                     <tr>
                            <td style="width: 10%">
                                <%# DataBinder.Eval(Container.DataItem, "JobNo")%>
                            </td>
                            <td style="width: 80%">
                                <%# DataBinder.Eval(Container.DataItem, "JobName")%>
                            </td>
                            <td style="width: 10%">
                                <%# DataBinder.Eval(Container.DataItem, "JobStatus")%>
                            </td>
                         </tr>
                         
     
                     </table>
     
     
                    </ItemTemplate>
     
     
                    </telerik:RadDropDownList>
                </td>
            </tr>
        </table>
     
       </asp:Panel>
     
     
     
     
     
    <br />
     
     
    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"
        CellSpacing="0" GridLines="None" AllowFilteringByColumn="True"
        AllowPaging="True" AllowSorting="True" AutoGenerateEditColumn="True" OnUpdateCommand="RadGrid1_UpdateCommand"
            OnNeedDataSource="RadGrid1_NeedDataSource" Skin="WebBlue" ShowStatusBar="true" >
        <ClientSettings>
            <Selecting AllowRowSelect="True" />
        </ClientSettings>
    <MasterTableView EditMode="EditForms" DataKeyNames="EFCId" CommandItemDisplay="Top" InsertItemPageIndexAction="ShowItemOnCurrentPage" GridLines="None" TableLayout="Auto">
    <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
     
    <Columns>
                    <telerik:GridTemplateColumn HeaderText="Year" ItemStyle-Width="100px">
                        <ItemTemplate >
                            <%#DataBinder.Eval(Container.DataItem, "Year")%>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadComboBox runat="server" ID="RadComboBox1" EnableLoadOnDemand="True" OnItemsRequested="RadComboBox1_ItemsRequested"
                            DataTextField="YearNo"  DataValueField="YearNo" Text='<%#DataBinder.Eval(Container.DataItem,"Year")%>' Skin="WebBlue"
                             MarkFirstMatch="True" >  
     
                            </telerik:RadComboBox>
                        </EditItemTemplate>
                     </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                        DataField="JobNo" ForceExtractValue="Always" HeaderText="Job No"
                        SortExpression="JobNo"  ItemStyle-Width="120px">
                        <HeaderStyle Width="120px" />
                        <ItemStyle Width="120px" />
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                        DataField="JobName" HeaderText="Job Name" SortExpression="JobName" ItemStyle-Width="500px">
                        <HeaderStyle Width="500px" />
                        <ItemStyle Width="500px" />
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn AllowFiltering="false"
                        DataField="EFCAmount" HeaderText="EFC Amount" SortExpression="EFCAmount" ItemStyle-Width="100px">
                        <HeaderStyle Width="100px" />
                        <ItemStyle Width="100px" />
                    </telerik:GridBoundColumn>
    </Columns>
     
    <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
    <HeaderStyle Width="20px"></HeaderStyle>
    </RowIndicatorColumn>
     
    <ExpandCollapseColumn Visible="True"
            FilterControlAltText="Filter ExpandColumn column" Created="True">
    <HeaderStyle Width="20px"></HeaderStyle>
    </ExpandCollapseColumn>
     
    <EditFormSettings>
    <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
    </EditFormSettings>
     
    <PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
    </MasterTableView>
     
    <PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
     
    <FilterMenu EnableTheming="True">
                <CollapseAnimation Duration="200" Type="OutQuint"></CollapseAnimation>
    </FilterMenu>
    </telerik:RadGrid>



    and here it is the c#
    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Collections.Generic;
    using System.Linq;
    using Project_SqlDataLibrary;
    using Microsoft.SharePoint.Administration;
    using Telerik.Web.UI;
    using System.Collections;
     
    namespace Project_EstimatedFinalCosts.WebPart_EstimatedFinalCosts
    {
        public partial class WebPart_EstimatedFinalCostsUserControl : UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    LoadAndConfigureYearData();
                    LoadAndConfigureMonthData();
                    LoadAndConfigureActiveJobData();
                }
            }
     
            private void LoadAndConfigureActiveJobData()
            {
                try
                {
                    int year = RadDropDownYears.SelectedValue == null ? DateTime.Now.Year : Convert.ToInt32(RadDropDownYears.SelectedValue);
                    int month = RadDropDownMonths.SelectedValue == null ? DateTime.Now.Month : Convert.ToInt32(RadDropDownMonths.SelectedValue);
     
                    IEnumerable<EFC_JobMaster> list = SQL_EFC.GetAll_ActiveJobList(year,month,true);
     
                    RadDropDownJobMaster.DataSource = list;
                    RadDropDownJobMaster.DataTextField = "JobName";
                    RadDropDownJobMaster.DataValueField = "JobNo";
     
                    RadDropDownYears.SelectedValue = "0";
     
                    RadDropDownJobMaster.DataBind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
             
            private void LoadAndConfigureYearData()
            {
                try
                {
                    IEnumerable<Year> list = SQL_Misc.GetAll_YearsList();
                    int index = list.FirstOrDefault(x => x.CurrentWorkYear == true).YearNo;
     
                    RadDropDownYears.DataSource = list;
                    RadDropDownYears.DataTextField = "YearNo";
                    RadDropDownYears.DataValueField = "YearNo";
     
                    RadDropDownYears.SelectedValue = index.ToString().Trim();
     
                    RadDropDownYears.DataBind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
     
            private void LoadAndConfigureMonthData()
            {
                try
                {
                    IEnumerable<Month> list = SQL_Misc.GetAll_MonthsList();
     
                    RadDropDownMonths.DataSource = list;
                    RadDropDownMonths.DataTextField = "MonthName";
                    RadDropDownMonths.DataValueField = "MonthNo";
     
                    int curMonth = DateTime.Now.Month;
                    if (curMonth == 1)
                        curMonth = 12;
                    else
                        curMonth--;
     
                    RadDropDownMonths.SelectedValue = curMonth.ToString().Trim();
     
                    RadDropDownMonths.DataBind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
     
            #region "Events"
     
            protected void RadGrid1_UpdateCommand(object source, GridCommandEventArgs e)
            {
                var editableItem = ((GridEditableItem)e.Item);
                var efcId = (int)editableItem.GetDataKeyValue("EFCId");  //you have the primary key value to required for update
     
     
                //get the value of the combobox
                GridEditFormItem formItem = e.Item as GridEditFormItem;
                var x = formItem.FindControl("RadComboBox1");
                RadComboBox dd = x as RadComboBox;
                int comboVal = Convert.ToInt32(dd.SelectedValue);
     
     
                ////this gets the other values from text input in values variable
                Hashtable values = new Hashtable();
                editableItem.ExtractValues(values);
          
            }
     
                  
            protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
            {
                try
                {
                    int year = RadDropDownYears.SelectedValue == null ? DateTime.Now.Year : Convert.ToInt32(RadDropDownYears.SelectedValue);
                    int month = RadDropDownMonths.SelectedValue == null ? DateTime.Now.Month : Convert.ToInt32(RadDropDownMonths.SelectedValue);
     
                    string jobno = String.Empty;
                    RadGrid1.DataSource = SQL_EFC.GetAll_List(year, month, jobno);
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
            protected void RadDropDownJobMaster_SelectedIndexChanged(object sender, DropDownListEventArgs e)
            {
                try
                {
                    RadGrid1.Rebind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
            protected void RadDropDownYears_SelectedIndexChanged(object sender, DropDownListEventArgs e)
            {
                try
                {
                    RadGrid1.Rebind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
            }
     
            protected void RadDropDownMonths_SelectedIndexChanged(object sender, DropDownListEventArgs e)
            {
                try
                {
                    RadGrid1.Rebind();
                }
                catch (Exception ex)
                {
                    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Autoreportlinks error: ", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
                }
     
            }
     
            protected void RadComboBox1_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
            {
                RadComboBox comboBox = (RadComboBox)sender;
                comboBox.Items.Clear();
     
                IEnumerable<Year> list = SQL_Misc.GetAll_YearsList();
     
                comboBox.DataSource = list;
                //comboBox.DataTextField = "YearNo";
                //comboBox.DataValueField = "YearNo";
     
                comboBox.DataBind();
            }
     
            #endregion
     
     
        }
    }
  2. Tsvetoslav
    Admin
    Tsvetoslav avatar
    1823 posts

    Posted 08 May 2013 Link to this post

    Hello Hans,

    Do make sure that you have updated your SP 2010 installation to at least the 2012 october Cumulative update as this was a bug with the CMS that MS managed to fix.

    Greetings,
    Tsvetoslav
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Hans
    Hans avatar
    49 posts
    Member since:
    Jul 2010

    Posted 08 May 2013 Link to this post

    Hi Tvetoslav,

    I've just installed the latest hotfix from microsoft for sharepoint 2010, but the error still persists.

    What else can I check ?

    Regards,
    Hans
  5. Answer
    Tsvetoslav
    Admin
    Tsvetoslav avatar
    1823 posts

    Posted 13 May 2013 Link to this post

    Hi Hans,

    That's good - I am attaching a small sample that demonstrates how to ajaxify the web part controls. Please, do the ajaxification as shown in it.


    Greetings, Tsvetoslav
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Back to Top