
We have been trying to use a combination of features of the RadComboBox. We want to use Load-on-Demand with CustomText AND also set/persist a SelectedValue, with a large number of records. We have encountered a couple issues that prevent us from accomplishing our goal.
The online demo ( http://demos.telerik.com/aspnet-ajax/combobox/examples/populatingwithdata/autocompletesql/defaultcs.aspx ) narrowly avoids one of the major issues we have encountered with the suggested implementation of load-on-demand. The online demo loads just enough records per request (10) that no matter what custom text is entered, there is never more than one request worth of filtered items to load. We often need multiple requests to load all of the matching/filtered items for the custom text, but the demonstrated method reverts to loading unfiltered items after the first request. We tried working around this issue ourselves, but then ran into another quirk of the load-on-demand mechanism.
The demonstrated method seems to only be feasible in the context of a single pass questionaire. Our application requires users be able to view and edit previous selections in fields with load-on-demand enabled. We are able to set a selected value, but then load-on-demand breaks. Every time the user clicks the load more results button, another duplicate of the selected value is added to the list. We tried various workarounds without success. We cannot distinguish between the first request (showing the selected value) and subsequent requests (showing filtered or unfiltered items based on the custom text).
We need to accomplish the following with the RadComboBox:
We are very close to having all three features working together, but are missing a piece. When the user opens the combobox, sees the selected value listed as the only item, and clicks the load more results button, we need to load unfiltered items instead of filtered items. We can always load the unfiltered items, but then we have the opposite problem: the custom text is never used to get a filtered list of items. This is the last obstacle to overcome in order to get load-on-demand working in our application the way it should (we think) by design.

Unhandled exception at line 8, column 21447 in http://localhost:16007/CESIReportExec/DES/GetFiles.aspx?type=scripts&version=5.0.1.5000&files=0_1_2_4_7_8_9_15_16_17_18_20_22_24_27_31_33_41_44_49_54
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property '10': object is null or undefined
The code that produces this appears in teh IE debugger: "vMO.MYMonth.innerHTML=(vMO.AMN?vCI.AMN[vM]:vCI.MN[vM]);"
which is in DES\GetFiles.aspx. I know that vMO.AMN is undefined and vM=10; This code is just a small part of a large amount of Telerik code. Is there anything else you need from me to give me some idea as to what I can do?
Thank you.
<telerik:RadGrid ID="rgCustomReport" AllowSorting="true" DataSourceID="odsCustomReport" PageSize="50" runat="server" OnItemCreated="rgCustomReport_ItemCreated" AllowPaging="true" AllowFilteringByColumn="true" EnableViewState="true" ShowFooter="true" AutoGenerateColumns="false" OnItemDataBound="rgCustomReport_ItemDataBound" Skin="WebBlue" OnPageSizeChanged="Grid_SizeChanged" OnSortCommand="rgCustomReport_SortCommand"> <PagerStyle Mode="NextPrevAndNumeric" Position="TopAndBottom" AlwaysVisible="true" /></telerik:RadGrid> <script type="text/javascript"> <!-- var hasChanges, inputs, dropdowns, editedRow; function RowClick(sender, eventArgs) { if(editedRow && hasChanges) { hasChanges = false; if(confirm("Update changes?")) { $find("<%= RadGrid1.MasterTableView.ClientID %>").updateItem(editedRow); } } } function RowDblClick(sender, eventArgs) { editedRow = eventArgs.get_itemIndexHierarchical(); $find("<%= RadGrid1.MasterTableView.ClientID %>").editItem(editedRow); } function GridCommand(sender, args) { if (args.get_commandName() != "Edit") { editedRow = null; } } function GridCreated(sender, eventArgs) { var gridElement = sender.get_element(); var elementsToUse = []; inputs = gridElement.getElementsByTagName("input"); for (var i = 0; i < inputs.length;i++) { var lowerType = inputs[i].type.toLowerCase(); if(lowerType == "hidden" || lowerType == "button") { continue; } Array.add(elementsToUse, inputs[i]); inputs[i].onchange = TrackChanges; } dropdowns = gridElement.getElementsByTagName("select"); for (var i = 0; i < dropdowns.length;i++) { dropdowns[i].onchange = TrackChanges; } setTimeout(function(){if(elementsToUse[0])elementsToUse[0].focus();},100); } function TrackChanges(e) { hasChanges = true; } --> </script> </telerik:RadCodeBlock> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> <telerik:AjaxUpdatedControl ControlID="Label1" /> </UpdatedControls> </telerik:AjaxSetting> </telerik:RadAjaxManager> <telerik:RadGrid ID="RadGrid1" DataSourceID="SessionDataSource1" OnItemDataBound = "RadGrid1_ItemDataBound" Width="97%" ShowStatusBar="True" AllowSorting="True" PageSize="21" GridLines="None" AllowPaging="True" runat="server" AllowAutomaticUpdates="True" AutoGenerateColumns="False" > <MasterTableView TableLayout="Fixed" DataKeyNames="checklistNo" EditMode="InPlace" DataSourceID="SessionDataSource1"> <Columns> <telerik:GridBoundColumn UniqueName="CategoryID" DataField="CategoryID" HeaderText="CategoryID" Display="False" ReadOnly="True" > <HeaderStyle Width="10%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="checklistNo" DataField="checklistNo" HeaderText="checklistNo" Display="False" ReadOnly="True" > <HeaderStyle Width="25%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="Related_item_type_label" DataField="Related_item_type_label" HeaderText="Question" ReadOnly="True"> <HeaderStyle Width="30%" /> </telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="TemplateColumn"> <HeaderStyle Width="12%" /> <ItemStyle Width="12%" /> <HeaderTemplate> <asp:Label ID="lblHeaderServiceImpact" Text="Service Impact" runat="server"></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblServiceImpact1" Text='<%#Eval("Service_impact_category")%>' runat="server"></asp:Label> </ItemTemplate> <EditItemTemplate> <telerik:RadTextBox AutoPostBack="true" ReadOnly="true" ID="lbllblServiceImpact" runat="server" Text='<%#Eval("Service_impact_category")%>' BorderStyle="None"> </telerik:RadTextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="TemplateColumn1"> <HeaderStyle Width="16%" /> <ItemStyle Width="16%" /> <HeaderTemplate> <asp:Label ID="lblHeaderInspectionResult" Text="Inspection Result" runat="server"></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblInspectionResult1" Text='<%#Eval("INSPECTION_RESULT")%>' runat="server"></asp:Label> </ItemTemplate> <EditItemTemplate> <telerik:RadTextBox AutoPostBack="true" visible="False" ID="lblInspectionResult" runat="server" Text='<%#Eval("INSPECTION_RESULT")%>'> </telerik:RadTextBox> <telerik:RadComboBox visible="True" ID="cbInspectionResult" AppendDataBoundItems="true" runat="server" Width="100px" > </telerik:RadComboBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="TemplateColumn2"> <HeaderStyle Width="16%" /> <ItemStyle Width="16%" /> <HeaderTemplate> <asp:Label ID="lblHeaderInspectionFault" Text="Inspection Fault" runat="server"></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblInspectionFault1" Text='<%#Eval("INSPECTION_FAULT")%>' runat="server"></asp:Label> </ItemTemplate> <EditItemTemplate> <telerik:RadTextBox AutoPostBack="true" visible="False" ID="lblInspectionFault" runat="server" Text='<%#Eval("INSPECTION_FaULT")%>'> </telerik:RadTextBox> <telerik:RadComboBox visible="True" ID="cbInspectionFault" AppendDataBoundItems="true" runat="server" Width="100px" > </telerik:RadComboBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="TemplateColumn3"> <HeaderStyle Width="20%" /> <ItemStyle Width="20%" /> <HeaderTemplate> <asp:Label ID="lblInspectionCommentHeader" Text="Comments" runat="server"></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblInspectionComment" Text='<%#Eval("INSPECTION_COMMENT")%>' runat="server"></asp:Label> </ItemTemplate> <EditItemTemplate> <telerik:RadTextBox AutoPostBack="true" visible="True" TextMode="MultiLine" Rows="2" ID="txtInspectionComment" runat="server" Text='<%#Eval("INSPECTION_COMMENT ")%>'> </telerik:RadTextBox> </EditItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings> <ClientEvents OnRowClick="RowClick" OnRowDblClick="RowDblClick" OnGridCreated="GridCreated" OnCommand="GridCommand" /> </ClientSettings> </telerik:RadGrid> </asp:Panel> </td> </tr> </table> <telerik:GridTextBoxColumnEditor ID="GridTextBoxColumnEditor1" runat="server" TextBoxStyle-Width="180px" /> <telerik:GridDropDownListColumnEditor ID="GridDropDownListColumnEditor1" runat="server" DropDownStyle-Width="70px" /> <telerik:GridCheckBoxColumnEditor ID="GridCheckBoxColumnEditor1" runat="server" CheckBoxStyle-BorderWidth="2" /> <telerik:GridNumericColumnEditor ID="GridNumericColumnEditor1" runat="server" NumericTextBox-Width="50px" /> <br /> <asp:Label ID="Label1" runat="server" EnableViewState="false" /> <br /> <asp:SqlDataSource ID="SessionDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" SelectCommand="SELECT categoryid, category_name, checklistNo, ROWNUM || ') ' || related_item_type_label AS related_item_type_label, inspection_Result, inspection_fault, service_impact_category, inspection_comment FROM ( SELECT categoryid || ' - ' || category_name categoryid, category_name, checklistNo, MAX( related_item_type_label ) AS related_item_type_label, MAX( inspection_Result ) AS inspection_Result,MAX( inspection_fault ) AS inspection_fault, MAX( service_impact_category ) AS service_impact_category, MAX( inspection_comment ) AS inspection_comment FROM(SELECT categoryid,category_name,checklistNo,DECODE( INSTR( related_item_type,'INSPECTION_RESULT'),0,NULL, related_item_type_label ) related_item_type_label,DECODE( INSTR( related_item_type,'INSPECTION_RESULT'),0,NULL, DECODE( related_item_value, NULL, default_value, related_item_value ) ) inspection_Result,DECODE( INSTR( related_item_type,'INSPECTION_FAULT'),0,NULL, DECODE( related_item_value, NULL, default_value, related_item_value ) ) inspection_fault,DECODE( INSTR( related_item_type,'SERVICE_IMPACT_CATEGORY'),0,NULL, DECODE( related_item_value, NULL, default_value, related_item_value ) ) service_impact_category,DECODE( INSTR( related_item_type,'INSPECTION_COMMENT'),0,NULL, DECODE( related_item_value, NULL, default_value, related_item_value ) ) inspection_comment FROM( SELECT v.view_name,v.item_type_order,v.related_item_type_label,v.related_item_type,SUBSTR(v.related_item_type, -5) checklistNo,d.related_item_value,( SELECT valid_type_rule_value FROM pimmds.valid_type_rules r WHERE r.valid_type_rule = 'VALID VALUE DEFAULT' AND r.item_type = v.related_item_type AND SYSDATE BETWEEN r.effectivity_in AND r.effectivity_out ) default_value, d.created_by, DECODE( c.categoryid,NULL,'91',c.categoryid) AS categoryid,c.category_name FROM PIMMDS.relationship_views v,( SELECT a.item_type, a.item_value, b.item_type related_item_type, b.item_value related_item_value, c.created_by FROM pimods.items a, pimods.items b, pimods.relationships c WHERE a.item_no = c.parent_item_no AND b.item_no = c.child_item_no AND a.item_type = 'INSPECTION_SEQUENCE_NUMBER' AND a.item_value = :ISN AND SYSDATE BETWEEN c.effectivity_in AND c.effectivity_out) d,(SELECT SUBSTR(related_item_type,-2) categoryid, related_item_type_value category_name FROM pimmds.relationship_views v WHERE view_name = 'Clearwire Quality Control Checklist' AND related_item_type LIKE 'INSPECTION_CATEGORY%' AND SYSDATE BETWEEN v.effectivity_in AND v.effectivity_out ) c WHERE v.view_name = 'Clearwire Quality Control Checklist Update' AND ( v.related_item_type LIKE 'INSPECTION_RESULT%' OR v.related_item_type LIKE 'INSPECTION_FAULT%' OR v.related_item_type LIKE 'SERVICE_IMPACT_CATEGORY%' OR v.related_item_type LIKE 'INSPECTION_COMMENT%') AND substr(v.related_item_type,-5,2) = :CATEGORYID AND v.item_type = d.item_type (+) AND v.related_item_type = d.related_item_type (+) AND SUBSTR( v.related_item_type,-5,2) = c.categoryid (+) ) ) GROUP BY categoryid, category_name,checklistNo ORDER BY checklistNo )" UpdateCommand="PIMMDS.QC_PROCESS_DATA_FLOW.deltaRDSInspection" OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues" UpdateCommandType="StoredProcedure"> <UpdateParameters> <asp:Parameter Name="L_INSPECTION_SN" Type="String" /> <asp:Parameter Name="L_LINE" Type="String" /> <asp:Parameter Name="L_RESULTS" Type="String" /> <asp:Parameter Name="L_FAULTS" Type="String" /> <asp:Parameter Name="L_COMMENTS" Type="String" /> </UpdateParameters> <SelectParameters> <asp:Parameter Name="ISN" Type="String" Direction="Input" /> <asp:Parameter Name="CATEGORYID" Type="String" Direction="Input" /> </SelectParameters> </asp:SqlDataSource> Protected Sub RadGrid1_UpdateCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.UpdateCommand If TypeOf e.Item Is Telerik.Web.UI.GridEditableItem Then Dim MyItem As GridDataItem = CType(e.Item, GridDataItem) Dim newValues As Hashtable = New Hashtable e.Item.OwnerTableView.ExtractValuesFromItem(newValues, MyItem) Dim lineNumber As String = MyItem.KeyValues Else Throw New ApplicationException("Expecting GridEditFormItem type on UpdateCommand") End If End Sub Protected Sub RadGrid1_ItemUpdated(ByVal source As Object, ByVal e As GridUpdatedEventArgs) Handles RadGrid1.ItemUpdated Try Dim l_userName As String = bpimData.getUserName Dim item As GridEditableItem = e.Item Dim ltInspectionResult As RadComboBox = item.FindControl("cbInspectionResult") Dim ltInspectionFault As RadComboBox = item.FindControl("cbInspectionFault") Dim ltInspectionComment As RadTextBox = item.FindControl("txtInspectionComment") Dim MyItem As GridDataItem = CType(e.Item, GridDataItem) Dim newValues As Hashtable = New Hashtable e.Item.OwnerTableView.ExtractValuesFromItem(newValues, MyItem) Dim lineNumber As String = MyItem.KeyValues Dim results As String = ltInspectionResult.Text Dim faults As String = ltInspectionFault.Text Dim comments As String = ltInspectionComment.Text bpimData.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("ConnectionString") Dim inspectionSN As String = Session("ID") Dim lineNo As String = lineNumber.Substring(14, 5) Dim spUpdate As String = "Begin PIMMDS.QC_PROCESS_DATA_FLOW.gridSaveInspection('" + inspectionSN + "','" + lineNo + "','" + results + "','" + faults + "','" + comments + "','" + l_userName + "') ; end;" bpimData.execute_dml(spUpdate) Catch ex As Exception End Try If Not e.Exception Is Nothing Then e.KeepInEditMode = True e.ExceptionHandled = True 'SetMessage(Server.HtmlEncode("Unable to update. Reason: " + e.Exception.Message).Replace("'", "'").Replace(vbCrLf, "<br />")) Else Dim dataItem As GridDataItem = e.Item 'SetMessage("ProductID " & dataItem.GetDataKeyValue("ProductID") & " updated") End If End Sub Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) If (TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode) Then Dim item As GridEditableItem = e.Item ' -------------------------------------------------------------------------- ' Update ComboBox for Inspection Result Dim lblserviceImpact As RadTextBox = item.FindControl("lbllblServiceImpact") Dim ltInspectionResult As RadTextBox = item.FindControl("lblInspectionResult") Dim irRadComboBox As RadComboBox = item.FindControl("cbInspectionResult") Dim inspectionResult As String If Not IsNothing(ltInspectionResult) Then If Not IsDBNull(ltInspectionResult.Text) Then inspectionResult = ltInspectionResult.Text Else inspectionResult = "N/A" End If If lblserviceImpact.Text = "Major" Then irRadComboBox.DataSource = Session("dtInspectionResultMajor") Else irRadComboBox.DataSource = Session("dtInspectionResultMinor") End If irRadComboBox.DataTextField = "INSPECTION_RESULT" irRadComboBox.DataValueField = "INSPECTION_RESULT" irRadComboBox.DataBind() If inspectionResult = "Pass" Then irRadComboBox.Items.Insert(0, New RadComboBoxItem("Pass")) Else irRadComboBox.Items.Insert(0, New RadComboBoxItem("Corrected")) End If irRadComboBox.SelectedValue = inspectionResult End If ' -------------------------------------------------------------------------- 'access/modify the edit item template settings here ' -------------------------------------------------------------------------- ' Update ComboBox for Inspection Fault Dim ltInspectionFault As RadTextBox = item.FindControl("lblInspectionFault") Dim ifRadComboBox As RadComboBox = item.FindControl("cbInspectionFault") Dim inspectionFault As String If Not IsNothing(ltInspectionFault) Then If Not IsDBNull(ltInspectionFault.Text) Then inspectionFault = ltInspectionFault.Text Else inspectionFault = "N/A" End If ifRadComboBox.DataSource = Session("dtInspectionFault") ifRadComboBox.DataTextField = "INSPECTION_FAULT" ifRadComboBox.DataValueField = "INSPECTION_FAULT" ifRadComboBox.DataBind() ifRadComboBox.SelectedValue = inspectionFault End If ElseIf (TypeOf e.Item Is GridDataItem AndAlso Not e.Item.IsInEditMode AndAlso Page.IsPostBack) Then Dim item As GridDataItem = e.Item 'Dim label As Label = Me.FindControl("Label1") ''update the label value 'label.Text = Session("updatedValue") End If End Sub Private Sub ApplyTemplate(ByVal parent As String, ByVal template As String) Dim parentItem As RadMenuItem = RadMenu1.FindItemByText(parent) Dim _template As ITemplate = LoadTemplate(template) For Each item As RadMenuItem In parentItem.Items _template.InstantiateIn(item) item.DataBind() Next End Sub Private Sub selectedItem() Dim ChildItem As New RadMenuItem() Dim a As String a = "re" End Sub