This question is locked. New answers and comments are not allowed.
Hi,
I have a grid with inline editing enabled. It works fine when no OnEdit handler is specified (i.e. it displays data properly, and i am able to add new rows to the Grid). However, once i attach an OnEdit handler, even if the handler is empty -
1. the grid does not display any data
2. when trying to insert a new row, i get a runtime exception (ArgumentException)
System.ArgumentException occurred
Message=An item with the same key has already been added.
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Web.Mvc.ViewDataDictionary.Add(String key, Object value)
at Telerik.Web.Mvc.UI.GridForeignKeyColumn`2.AppendSelectList(IDictionary`2 viewData, Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridForeignKeyEditorForCellBuilder`2.AppendCellContent(IHtmlNode td, Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridDataCellBuilderBase.CreateCell(Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridInLineEditRowBuilder.AppendEditor(IHtmlNode container)
at Telerik.Web.Mvc.UI.Html.GridInLineEditRowBuilder.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridDataSectionBuilder.CreateBody(IEnumerable`1 rowBuilders)
at Telerik.Web.Mvc.UI.Html.GridDataSectionBuilder.CreateBody(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridHtmlBuilder.CreateBody(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.CreateContentTable(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.CreateContent(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.AppendData(IHtmlNode div, GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridHtmlBuilder.CreateGrid(IDictionary`2 htmlAttributes, GridFunctionalData functionalData, GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Grid`1.WriteHtml(HtmlTextWriter writer)
at Telerik.Web.Mvc.UI.ViewComponentBase.ToHtmlString()
at Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.ToHtmlString()
at Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.ToString()
at System.Web.HttpWriter.Write(Object obj)
at System.Web.Mvc.ViewPage.SwitchWriter.Write(Object value)
at System.Web.UI.HtmlTextWriter.Write(Object value)
at ASP.areas_scenariomanagement_views_scenario_maturitydefaulttimingconditions_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Users\Fin_user3\Documents\Visual Studio 2010\Projects\dirty2\CmbsAdvisor\CmbsAdvisor.Web\Areas\ScenarioManagement\Views\Scenario\MaturityDefaultTimingConditions.ascx:line 19
InnerException:
Note that i have multiple foreign key columns in the grid, all bound using the ForiegnKey method.
The OnEditHandler currently is
Any insights will be appreciated.
I have a grid with inline editing enabled. It works fine when no OnEdit handler is specified (i.e. it displays data properly, and i am able to add new rows to the Grid). However, once i attach an OnEdit handler, even if the handler is empty -
1. the grid does not display any data
2. when trying to insert a new row, i get a runtime exception (ArgumentException)
System.ArgumentException occurred
Message=An item with the same key has already been added.
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Web.Mvc.ViewDataDictionary.Add(String key, Object value)
at Telerik.Web.Mvc.UI.GridForeignKeyColumn`2.AppendSelectList(IDictionary`2 viewData, Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridForeignKeyEditorForCellBuilder`2.AppendCellContent(IHtmlNode td, Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridDataCellBuilderBase.CreateCell(Object dataItem)
at Telerik.Web.Mvc.UI.Html.GridInLineEditRowBuilder.AppendEditor(IHtmlNode container)
at Telerik.Web.Mvc.UI.Html.GridInLineEditRowBuilder.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridRowBuilderDecoratorBase.CreateRow()
at Telerik.Web.Mvc.UI.Html.GridDataSectionBuilder.CreateBody(IEnumerable`1 rowBuilders)
at Telerik.Web.Mvc.UI.Html.GridDataSectionBuilder.CreateBody(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridHtmlBuilder.CreateBody(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.CreateContentTable(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.CreateContent(GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridScrollingHtmlBuilder.AppendData(IHtmlNode div, GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Html.GridHtmlBuilder.CreateGrid(IDictionary`2 htmlAttributes, GridFunctionalData functionalData, GridRenderingData renderingData)
at Telerik.Web.Mvc.UI.Grid`1.WriteHtml(HtmlTextWriter writer)
at Telerik.Web.Mvc.UI.ViewComponentBase.ToHtmlString()
at Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.ToHtmlString()
at Telerik.Web.Mvc.UI.ViewComponentBuilderBase`2.ToString()
at System.Web.HttpWriter.Write(Object obj)
at System.Web.Mvc.ViewPage.SwitchWriter.Write(Object value)
at System.Web.UI.HtmlTextWriter.Write(Object value)
at ASP.areas_scenariomanagement_views_scenario_maturitydefaulttimingconditions_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Users\Fin_user3\Documents\Visual Studio 2010\Projects\dirty2\CmbsAdvisor\CmbsAdvisor.Web\Areas\ScenarioManagement\Views\Scenario\MaturityDefaultTimingConditions.ascx:line 19
InnerException:
Note that i have multiple foreign key columns in the grid, all bound using the ForiegnKey method.
<% = Html.Telerik().Grid<MaturityDefaultCondition>() .Name("MaturityDefaultConditionGrid") .HtmlAttributes(new { style = "width: 100%"}) .Footer(false) .DataKeys(keys => { keys.Add(mdc => mdc.Id); }) .ToolBar(commands => { commands.Insert().ButtonType(GridButtonType.BareImage).ImageHtmlAttributes(Url.Content("~/Content/Images/AddSmall.png")); //commands.SubmitChanges(); commands.Position(GridToolBarPosition.Bottom); }) .DataBinding(dataBinding => dataBinding.Ajax() .Select("_GetMaturityDefaultConditions", "Scenario") .Update("_SaveMaturityDefaultConditions", "Scenario") ) .Columns(columns => { columns.Bound(mdc => mdc.DebtYield_GT).Title("Debt Yield>"); columns.Bound(mdc => mdc.DebtYield_LTE2).Title("Debt Yield<="); columns.ForeignKey(mdc => mdc.SSId, (IEnumerable)ViewData["ssDetailsList"], "Id", "SSName").Title("SS"); columns.Bound(mdc => mdc.OccupancyPct).Title("Occupancy% >="); columns.Bound(mdc => mdc.OccupanyExpires).Title("Expiration>=(months)"); columns.ForeignKey(mdc => mdc.AndOrLSBetw, (IEnumerable)ViewData["MDCAndOrLSBetwList"], "Id", "Text").Title("And/Or"); columns.Bound(mdc => mdc.LossSeverityGTE).Title("Loss Severity% >="); columns.Bound(mdc => mdc.LossSeverityLT).Title("Loss Severity% <"); columns.ForeignKey(mdc => mdc.MaturityAction, (IEnumerable)ViewData["MaturityActionTypeList"], "Id", "ActionType").Title("Action"); columns.Bound(mdc => mdc.ExtendByMonths).Title("Extend By(months)"); columns.Bound(mdc => mdc.PaydownPct).Title("Paydown %"); columns.Command(commands => commands.Delete().ImageHtmlAttributes("img src='" + Url.Content("~/Content/Images/DeleteRed.png") + "'").ButtonType(GridButtonType.BareImage)).Width(40).Title(""); }) .ClientEvents(events => events//.OnDataBinding("MaturityDefaultConditionGrid_onDataBinding") //.OnError("MaturityDefaultConditionGrid_onError") //.OnLoad("MaturityDefaultConditionGrid_onLoad") //.OnRowDataBound("MaturityDefaultConditionGrid_onRowDataBound") .OnComplete("MaturityDefaultConditionGrid_onComplete") .OnEdit("MaturityDefaultConditionsGrid_onEdit") //--- WORKS FINE IF I COMMENT THIS OUT ) .Editable(editing => editing.Mode(GridEditMode.InCell)) .Editable(editing => editing.DefaultDataItem(new MaturityDefaultCondition {AndOrLSBetw=1, LossSeverityGTE=0, LossSeverityLT=100, MaturityAction=1})) .Scrollable(sc => { sc.Height(160); }) .KeyboardNavigation(knb => { knb.EditOnTab(true); } )%>function MaturityDefaultConditionsGrid_onEdit(e) { debugger; var row = e.row; // $("#MaturityAction").bind('change', function () { alert("Bound"); //}); //or better : $(row).find('.t-dropdown').addClass('myClass'); }Any insights will be appreciated.