Line 7: TagPrefix="uc3" %>
Line 8: <div style="background-color:#D6E5F3;">
Line 9: <telerik:RadTabStrip ID="CreateSchoolTabStrip" runat="server" Skin="Office2007" MultiPageID="CreateSchoolMultipage"
Line 10: SelectedIndex="1" CausesValidation="false">
Line 11: <Tabs>
|
I have a scenario with multiple RadComboBoxes that don’t seem to fire the Itemsrequested server event prior to receiving the response from the previous callback. Here is a page that I wrote to show the problem. When the normal ASP.NET drop down changes indexes, it will make a callback that has a 5 seconds delay in it. If you press the drop down button for either of the RadComboBoxes during this time, it will display loading but never return. You have to click out of the combo box and then back in it to get the items to load.
RadComboBox 1 also has an onblur that calls an AJAX callback to a 5 second delay. If you try to drop down RadComboBox 2 during this delay, it will just show loading and not update.
Do you have any suggestion as to what might be causing this and how to get around it? Ideally the combo boxes will be able to either load during the callback or queue the request so that it will start when the previous callback is complete.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ 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
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
<
style
type
=
"text/css"
>
.RadComboBoxDropDown .rcbItem,
.RadComboBoxDropDown .rcbHovered,
.RadComboBoxDropDown .rcbDisabled,
.RadComboBoxDropDown .rcbLoading
{
margin: 0 1px;
padding: 2px 6px;
white-space: pre;
}
</
style
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
div
>
<
asp:Label
ID
=
"lblDDL"
Text
=
"Drop Down 1"
style
=
"float:left;"
runat
=
"server"
></
asp:Label
>
<
asp:DropDownList
ID
=
"DDLTest1"
runat
=
"server"
style
=
"float:left;"
AutoPostBack
=
"true"
OnSelectedIndexChanged
=
"DDLTest1_SelectedIndexChanged"
>
<
asp:ListItem
Text
=
"apple"
>
</
asp:ListItem
>
<
asp:ListItem
Text
=
"orange"
/>
</
asp:DropDownList
>
<
br
/>
<
br
/>
<
asp:Label
ID
=
"lblrcb1"
Text
=
"RadComboBox 1"
runat
=
"server"
style
=
"float:left;"
/>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
OnItemsRequested
=
"RadComboBox1_ItemsRequested"
style
=
"float:left;"
EnableLoadOnDemand
=
"true"
OnClientBlur
=
"function(){$find('PageAjaxManager').ajaxRequest('RadComboBox1');}"
EnableAjaxSkinRendering
=
"true"
ItemRequestTimeout
=
"1000"
runat
=
"server"
>
</
telerik:RadComboBox
>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
br
/>
<
asp:Label
ID
=
"lblrcb2"
Text
=
"RadComboBox 2"
runat
=
"server"
style
=
"float:left;"
/>
<
telerik:RadComboBox
ID
=
"RadComboBox2"
OnItemsRequested
=
"RadComboBox2_ItemsRequested"
style
=
"float:left;"
EnableLoadOnDemand
=
"true"
EnableAjaxSkinRendering
=
"true"
ItemRequestTimeout
=
"1000"
runat
=
"server"
>
</
telerik:RadComboBox
>
</
div
>
<
telerik:RadAjaxManager
ID
=
"PageAjaxManager"
runat
=
"server"
RequestQueueSize
=
"5"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"DDLTest1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"DDLTest1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
</
form
>
</
body
>
</
html
>
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Data.OleDb;
using
Telerik.Web.UI;
using
System.Threading;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
RadComboBox1_ItemsRequested(
object
o, RadComboBoxItemsRequestedEventArgs e)
{
DataTable dataTable =
new
DataTable();
dataTable.Columns.Add(
new
DataColumn(
"ID"
,
typeof
(
string
)));
dataTable.Columns.Add(
new
DataColumn(
"Name"
,
typeof
(
string
)));
DataRow dr = dataTable.NewRow();
dr[
"ID"
] =
"1"
;
dr[
"Name"
] = Server.HtmlEncode(
"Name 1 2 3"
);
dataTable.Rows.Add(dr);
DataRow dr2 = dataTable.NewRow();
dr2[
"ID"
] =
"2"
;
dr2[
"Name"
] =
"Name 2 4"
;
dataTable.Rows.Add(dr2);
DataRow dr3 = dataTable.NewRow();
dr3[
"ID"
] =
"3"
;
dr3[
"Name"
] =
"1 Name 3"
;
dataTable.Rows.Add(dr3);
if
(o
is
RadComboBox)
{
(o
as
RadComboBox).DataSource = dataTable;
(o
as
RadComboBox).DataTextField =
"Name"
;
(o
as
RadComboBox).DataValueField =
"ID"
;
(o
as
RadComboBox).DataBind();
}
}
protected
void
RadComboBox2_ItemsRequested(
object
o, RadComboBoxItemsRequestedEventArgs e)
{
DataTable dataTable =
new
DataTable();
dataTable.Columns.Add(
new
DataColumn(
"ID"
,
typeof
(
string
)));
dataTable.Columns.Add(
new
DataColumn(
"Name"
,
typeof
(
string
)));
DataRow dr = dataTable.NewRow();
dr[
"ID"
] =
"1"
;
dr[
"Name"
] = Server.HtmlEncode(
"Name 1 2 3"
);
dataTable.Rows.Add(dr);
DataRow dr2 = dataTable.NewRow();
dr2[
"ID"
] =
"2"
;
dr2[
"Name"
] =
"Name 2 4"
;
dataTable.Rows.Add(dr2);
DataRow dr3 = dataTable.NewRow();
dr3[
"ID"
] =
"3"
;
dr3[
"Name"
] =
"1 Name 3"
;
dataTable.Rows.Add(dr3);
if
(o
is
RadComboBox)
{
(o
as
RadComboBox).DataSource = dataTable;
(o
as
RadComboBox).DataTextField =
"Name"
;
(o
as
RadComboBox).DataValueField =
"ID"
;
(o
as
RadComboBox).DataBind();
}
}
protected
override
void
RaisePostBackEvent(IPostBackEventHandler sourceControl,
string
eventArgument)
{
base
.RaisePostBackEvent(sourceControl, eventArgument);
if
(sourceControl
is
RadComboBox || eventArgument == RadComboBox1.ClientID)
{
Thread.Sleep(5000);
}
}
protected
void
DDLTest1_SelectedIndexChanged(
object
sender, EventArgs e)
{
Thread.Sleep(5000);
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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
id
=
"Head"
runat
=
"server"
>
<
title
></
title
>
<
script
type
=
"text/javascript"
language
=
"JavaScript"
>
function setSize(elem) {
var the_height;
the_height = elem.contentWindow.document.body.scrollHeight;
elem.height = the_height; // Its works fine in IE, Chrome, Safari but not work in FF and opera
}
</
script
>
<
asp:ContentPlaceHolder
ID
=
"head"
runat
=
"server"
>
</
asp:ContentPlaceHolder
>
</
head
>
<
body
id
=
"Page_Master"
runat
=
"server"
>
<
form
id
=
"formMasterPage"
method
=
"post"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
AsyncPostBackTimeout
=
"500"
>
</
telerik:RadScriptManager
>
<
div
id
=
"MainPage"
>
<
div
class
=
"Header"
>
</
div
>
<
div
id
=
"ContentHolder"
>
<
div
id
=
"Content"
>
<
asp:ContentPlaceHolder
ID
=
"ContentPlaceHolder1"
runat
=
"server"
>
</
asp:ContentPlaceHolder
>
<
iframe
id
=
"IFrameMaster"
name
=
"IFrameMaster"
scrolling
=
"auto"
width
=
"998px"
style
=
" min-height:500px;"
allowtransparency
=
"true"
frameborder
=
"0"
runat
=
"server"
>
</
iframe
>
</
div
>
</
div
>
<
div
id
=
"Footer"
>
</
div
>
</
div
>
</telerik:RadAjaxPanel>
</
form
>
</
body
>
</
html
>
// This code used in Page_Load Method and other methods depends on condition.
IFrameMaster.Attributes[
"src"
] =
"UIHome.aspx"
;
// This line used only Page_Load Method
IFrameMaster.Attributes.Add(
"onload"
,
"javascript:setSize(this)"
);
<
telerik:RadEditor
ID
=
"re1"
runat
=
"server"
>
</
telerik:RadEditor
>
<
telerik:RadToolTip
ID
=
"RadToolTip1"
runat
=
"server"
TargetControlID
=
"re1"
ShowEvent
=
"OnFocus"
Text
=
"Test"
>
</
telerik:RadToolTip
>
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Popup.Master" AutoEventWireup="true" CodeBehind="CompanyItemReference.aspx.cs" Inherits="NTE.NTEx.Web.App.ItemMaster.CompanyItemReference" Title="Item Reference" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"cphMain"
runat
=
"server"
>
<
center
><
asp:Label
ID
=
"Label1"
CssClass
=
"NormalTextBold"
runat
=
"server"
></
asp:Label
></
center
>
<
telerik:RadGrid
ID
=
"RadGrid1"
Skin
=
"Web20"
runat
=
"server"
Width
=
"100%"
AutoGenerateColumns
=
"False"
HorizontalAlign
=
"Right"
BorderStyle
=
"None"
BorderWidth
=
"0px"
CellPadding
=
"0"
CellSpacing
=
"0"
ItemStyle-Height
=
"10px"
HeaderStyle-Height
=
"10px"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
OnDeleteCommand
=
"RadGrid1_DeleteCommand"
OnInsertCommand
=
"RadGrid1_InsertCommand"
OnUpdateCommand
=
"RadGrid1_UpdateCommand"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
PageSize
=
"20"
AllowSorting
=
"True"
AllowMultiRowSelection
=
"False"
AllowPaging
=
"True"
GridLines
=
"Horizontal"
ShowStatusBar
=
"false"
>
<
PagerStyle
Mode
=
"NumericPages"
></
PagerStyle
>
<
ClientSettings
AllowExpandCollapse
=
"True"
>
<
Resizing
AllowColumnResize
=
"true"
ResizeGridOnColumnResize
=
"false"
AllowRowResize
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
CommandItemDisplay
=
"Top"
AllowFilteringByColumn
=
"True"
DataKeyNames
=
"item_id"
AllowMultiColumnSorting
=
"True"
HierarchyLoadMode
=
"ServerOnDemand"
Width
=
"100%"
HierarchyDefaultExpanded
=
"False"
runat
=
"server"
Name
=
"Item"
>
<
DetailTables
>
<
telerik:GridTableView
AllowPaging
=
"false"
CommandItemDisplay
=
"Top"
DataKeyNames
=
"id"
Width
=
"80%"
runat
=
"server"
Name
=
"Reference"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"item_id"
MasterKeyField
=
"item_id"
/>
</
ParentTableRelation
>
<
Columns
>
<
telerik:GridEditCommandColumn
Resizable
=
"false"
HeaderStyle-Width
=
"30px"
ItemStyle-Width
=
"30px"
UniqueName
=
"EditCommandColumn"
></
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"id"
HeaderText
=
"Detail ID"
DataField
=
"id"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"Item_ID"
HeaderText
=
"Item ID"
DataField
=
"item_id"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"HoldReferenceType"
DataField
=
"reference_type"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDropDownColumn
UniqueName
=
"DDReferenceType"
SortExpression
=
"display_name"
ListTextField
=
"display_name"
EnableEmptyListItem
=
"true"
EmptyListItemText
=
"--Choose an option--"
EmptyListItemValue
=
""
ListValueField
=
"Reference_Type"
HeaderText
=
"Reference Type"
DataField
=
"reference_type"
>
</
telerik:GridDropDownColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
UniqueName
=
"reference_name"
HeaderText
=
"Name"
DataField
=
"reference_name"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"reference_value"
HeaderText
=
"Value"
DataField
=
"reference_value"
>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete this Item?"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"DeleteColumn1"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
CssClass
=
"MyImageButton"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
SortExpressions
>
<
telerik:GridSortExpression
FieldName
=
"reference_name"
></
telerik:GridSortExpression
>
</
SortExpressions
>
</
telerik:GridTableView
>
</
DetailTables
>
<
Columns
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"item_id"
HeaderText
=
"item_ID"
DataField
=
"item_id"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"MemNo"
HeaderText
=
"Member"
DataField
=
"Mem_No"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"GroupID"
HeaderText
=
"Community"
DataField
=
"Group_Id"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
visible
=
"false"
UniqueName
=
"type"
HeaderText
=
"Type"
DataField
=
"owner_reference_type"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"reference"
HeaderText
=
"Product ID"
FilterControlWidth
=
"50px"
HeaderStyle-Width
=
"100px"
ItemStyle-Width
=
"100px"
DataField
=
"owner_reference_value"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"Commodity"
HeaderText
=
"Commodity"
ReadOnly
=
"true"
ShowFilterIcon
=
"false"
FilterControlAltText
=
"Enter a commodity and hit return"
FilterControlWidth
=
"20px"
AutoPostBackOnFilter
=
"true"
HeaderStyle-Width
=
"30px"
ItemStyle-Width
=
"30px"
DataField
=
"Commodity_code"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
UniqueName
=
"UPC"
HeaderText
=
"UPC"
Resizable
=
"true"
HeaderStyle-Width
=
"120px"
ItemStyle-Width
=
"120px"
DataField
=
"UPC"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
UniqueName
=
"GTIN"
HeaderText
=
"GTIN"
HeaderStyle-Width
=
"120px"
ItemStyle-Width
=
"120px"
DataField
=
"GTIN"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
UniqueName
=
"Branch"
HeaderText
=
"Branch"
ShowFilterIcon
=
"false"
FilterControlAltText
=
"Enter a branch and hit return"
FilterControlWidth
=
"20px"
AutoPostBackOnFilter
=
"true"
HeaderStyle-Width
=
"30px"
ItemStyle-Width
=
"30px"
DataField
=
"Branch"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ReadOnly
=
"true"
UniqueName
=
"Description"
HeaderText
=
"Description"
AllowFiltering
=
"false"
DataField
=
"Description"
>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete this Item?"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"DeleteColumn1"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
CssClass
=
"MyImageButton"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
SortExpressions
>
<
telerik:GridSortExpression
FieldName
=
"owner_reference_value"
></
telerik:GridSortExpression
>
</
SortExpressions
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
asp:Content
>
using
System;
using
System.Collections;
using
System.Configuration;
using
System.Data;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
NTE.NTEx.Web.Common;
using
NTE.NTEx.BusinessLogic;
using
Telerik.Web.UI;
using
SubSonic;
//Query Object
using
NTE.NTEx.Data;
using
NTE.NTEx.Web.Session;
using
NTE.NTEx.DataAccessObjects;
using
NTE.NTEx.Security;
using
System.Text;
namespace
NTE.NTEx.Web.App.ItemMaster
{
[Page(
"Item References"
, Description =
"Item References"
)]
public
partial
class
CompanyItemReference : BasePage
{
private
void
Page_Load(
object
sender, System.EventArgs e)
{
if
(!Page.IsPostBack)
//first time hit page
{
SetData(
"MemNo"
, Request.QueryString[
"MemNo"
]);
SetData(
"GroupID"
, Request.QueryString[
"GroupID"
]);
SetData(
"ReadOnly"
, Request.QueryString[
"ReadOnly"
]);
if
(
string
.IsNullOrEmpty(Data[
"WHERE"
]) ==
true
)
{
SetWhereClause();
}
}
}
protected
void
RadGrid1_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
LoadData();
}
private
void
SetWhereClause()
{
StringBuilder strSQL =
new
StringBuilder();
DbParams parameters =
new
DbParams();
strSQL.Append(
" Select get_mem_group_filter (:1, :2, 'mem_no','group_id') where_clause from ntex_session"
);
parameters.Add(
"1"
, Data[
"MemNo"
]);
parameters.Add(
"2"
, Data[
"GroupId"
]);
DataSet ds = DataHelper.FetchData(strSQL.ToString(), parameters);
SetData(
"WHERE"
, (
string
) ds.Tables[0].Rows[0][
"where_clause"
]);
}
private
void
LoadData()
{
StringBuilder strSQL =
new
StringBuilder();
//Category Query
DbParams parameters =
new
DbParams();
strSQL.Append(
" select * from company_item2"
);
strSQL.Append(
" where mem_no = :1 "
);
strSQL.Append(Data[
"Where"
]);
parameters.Add(
"1"
, Data[
"MemNo"
]);
DataSet ds = DataHelper.FetchData(strSQL.ToString(), parameters);
RadGrid1.AutoGenerateColumns =
false
;
RadGrid1.DataSource = ds.Tables[0];
RadGrid1.MasterTableView.DataSource = ds.Tables[0];
strSQL.Remove(0, strSQL.Length);
parameters.Clear();
strSQL.Append(
" select * from company_item"
);
strSQL.Append(
" where mem_no = :1 "
);
strSQL.Append(Data[
"Where"
]);
parameters.Add(
"1"
, Data[
"MemNo"
]);
ds = DataHelper.FetchData(strSQL.ToString(), parameters);
RadGrid1.AutoGenerateColumns =
false
;
RadGrid1.MasterTableView.DetailTables[0].DataSource = ds.Tables[0];
}
protected
void
RadGrid1_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
string
tableName = e.Item.OwnerTableView.Name.ToString();
if
(e.Item
is
GridEditableItem && (e.Item
as
GridEditableItem).IsInEditMode && tableName==
"Reference"
)
{
GridEditableItem editedItem = e.Item
as
GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
StringBuilder strSQL =
new
StringBuilder();
strSQL.Append(
" select a.reference_type, a.display_name from reference_master_type a where reference_master_id = to_number(getcontextattribute('"
+Data[
"MemNo"
]+
"',"
+Data[
"GroupId"
]+
",'REFMSTRID'))"
);
DataSet ds = DataHelper.FetchData(strSQL.ToString());
//
GridDropDownListColumnEditor editor = editMan.GetColumnEditor(
"DDReferenceType"
)
as
GridDropDownListColumnEditor;
//in case you have RadComboBox editor for the GridDropDownColumn (this is the default editor),
//you will need to use ComboBoxControl below instead of DropDownListControl
//Then you can modify the list control as per your custom conventions
editor.DataSource = ds.Tables[0];
editor.DataBind();
//editor.Visible = true;
//editor.ComboBoxControl.SelectedValue = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["id"].ToString();
//And so on
}
}
protected
void
RadGrid1_InsertCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
//Get the GridEditableItem of the RadGrid
string
tableName = e.Item.OwnerTableView.Name.ToString();
GridEditableItem editedItem = e.Item
as
GridEditableItem;
//try
//{
switch
(tableName)
{
case
"Item"
:
{
string
str_Reference = (editedItem[
"reference"
].Controls[0]
as
TextBox).Text;
ItemCollection colIC =
new
ItemCollection();
Query qry =
new
Query(Item.Schema);
qry.AddWhere(
"owner_reference"
, str_Reference);
colIC.LoadAndCloseReader (qry.ExecuteReader());
if
(colIC.Count == 1)
{
ItemCorporationUsageCollection colICU =
new
ItemCorporationUsageCollection();
qry =
new
Query(ItemCorporationUsage.Schema);
qry.AddWhere(
"item_id"
, colIC[0].Id).AND(
"related_corporation_id"
,
int
.Parse(Data[
"MemNo"
]));
colICU.LoadAndCloseReader (qry.ExecuteReader());
if
(colICU.Count == 0)
{
DataAccessObjects.ItemCorporationUsage oICU;
oICU =
new
ItemCorporationUsage();
oICU.RelatedCorporationId =
int
.Parse(Data[
"MemNo"
]);
oICU.ItemId = colIC[0].Id;
oICU.Save();
}
}
LoadData();
DisplayMessage(
"Add Successfull."
);
break
;
}
case
"Reference"
:
{
int
itemid =
int
.Parse(editedItem.OwnerTableView.ParentItem.OwnerTableView.DataKeyValues[editedItem.OwnerTableView.ParentItem.ItemIndex][
"item_id"
].ToString());
DropDownList list = editedItem.FindControl(
"DDReferenceType"
)
as
DropDownList;
Response.Write(list.Items.Count +
"<BR>"
);
Response.Write(editedItem[
"DDReferenceType"
].Controls[0].ToString());
DataAccessObjects.ItemCorporationReference oICR;
oICR =
new
ItemCorporationReference();
oICR.RelatedCorporationId =
int
.Parse(Data[
"MemNo"
]);
oICR.ItemId = itemid;
//oICR.ReferenceType = (editedItem.FindControl("DDReferenceType") as DropDownList).SelectedItem.Value;
oICR.Reference = (editedItem[
"reference_value"
].Controls[0]
as
TextBox).Text;
//oICR.Save();
//LoadData();
DisplayMessage(
"Insert Successfull."
);
break
;
}
}
//}
//catch
//{
// Response.Write("Error: Parameter could not be saved.");
//}
}
protected
void
RadGrid1_ItemCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.EditCommandName)
{
Response.Write(
"Primary key for the clicked item from ItemCommand: "
+ e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"item_id"
] +
"<br>"
);
Response.Write(
"Item Index for the clicked item from ItemCommand: "
+ e.Item.ItemIndex +
"<br>"
);
DisplayMessage(
"Table Name clicked item from ItemCommand: "
+ e.Item.OwnerTableView.Name.ToString() +
"<br>"
);
}
}
protected
void
RadGrid1_DeleteCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
//Get the GridEditableItem of the RadGrid
GridEditableItem editedItem = e.Item
as
GridEditableItem;
string
tableName = e.Item.OwnerTableView.Name.ToString();
try
{
switch
(tableName)
{
case
"Item"
:
{
int
ItemID =
int
.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"item_id"
].ToString());
Query qry =
new
Query(ItemCorporationReference.Schema);
qry.QueryType = QueryType.Delete;
qry.AddWhere(
"item_id"
, ItemID).AND(
"related_corporation_id"
,
int
.Parse(Data[
"MemNo"
]));
qry.Execute();
qry =
new
Query(ItemCorporationUsage.Schema);
qry.QueryType = QueryType.Delete;
qry.AddWhere(
"item_id"
, ItemID).AND(
"related_corporation_id"
,
int
.Parse(Data[
"MemNo"
]));
qry.Execute();
LoadData();
DisplayMessage(
"Delete Successfull."
);
break
;
}
case
"Reference"
:
{
int
DeleteID =
int
.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"id"
].ToString());
DataAccessObjects.ItemCorporationReference.Delete(DeleteID);
DisplayMessage(
"Delete Successfull."
);
break
;
}
}
}
catch
{
DisplayMessage(
"Error: Parameter could not be saved."
);
}
}
protected
void
RadGrid1_UpdateCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
//Get the GridEditableItem of the RadGrid
GridEditableItem editedItem = e.Item
as
GridEditableItem;
string
tableName = e.Item.OwnerTableView.Name.ToString();
try
{
switch
(tableName)
{
case
"Item"
:
{
break
;
}
case
"Reference"
:
{
int
UpdateID =
int
.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"id"
].ToString());
DataAccessObjects.ItemCorporationReference oICR;
oICR =
new
ItemCorporationReference(UpdateID);
oICR.ReferenceType = (editedItem[
"DDReferenceType"
].Controls[0]
as
DropDownList).SelectedItem.Value;
oICR.Reference = (editedItem[
"reference_value"
].Controls[0]
as
TextBox).Text;
oICR.Save();
DisplayMessage(
"Delete Successfull."
);
break
;
}
}
}
catch
{
DisplayMessage(
"Error: Parameter could not be saved."
);
}
}
private
void
DisplayMessage(
string
text)
{
RadGrid1.Controls.Add(
new
LiteralControl(
string
.Format(
"<span style='color:red'>{0}</span>"
, text)));
}
}
}
using
System;
using
System.Collections.Generic;
using
System.Data.Linq;
using
System.Linq;
using
System.Runtime.Serialization;
using
System.ServiceModel;
using
System.ServiceModel.Activation;
using
System.ServiceModel.Web;
using
System.Text;
using
System.Web.Services;
using
Telerik.Web.UI;
namespace
QUARK.webservices
{
[
ServiceContract(Namespace = "")]
[
AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class strange
{
[
OperationContract]
public RadComboBoxData LoadDataTemplates(RadComboBoxContext context)
{
RadComboBoxData result = new RadComboBoxData();
quarkDataContext quarkdb = new quarkDataContext();
var allTemplates = from DEVICE_TYPE in quarkdb.DEVICE_TYPEs
orderby DEVICE_TYPE.DESC
select new RadComboBoxItemData
{
Text = DEVICE_TYPE.DESC
};
string text = context.Text;
if (!String.IsNullOrEmpty(text))
{
allTemplates = allTemplates.Where(item => item.Text.StartsWith(text));
}
int numberOfItems = context.NumberOfItems;
var templates2 = allTemplates.Skip(numberOfItems).Take(10);
result.Items = templates2.ToArray();
int endOffset = numberOfItems + templates2.Count();
int totalCount = allTemplates.Count();
if (endOffset == totalCount)
result.EndOfItems =
true;
result.Message =
String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>",
endOffset, totalCount);
return result;
}
}
}
<
telerik:RadComboBox ID="drp_hosttemplate" Runat="server"
Skin="Web20" Width="177px" EnableLoadOnDemand="True"
EnableVirtualScrolling="True" ShowMoreResultsBox="True"
EnableItemCaching="True" >
<WebServiceSettings Method="LoadDataTemplates" Path="webservices/strange.svc" />
<ExpandAnimation Type="InOutElastic" />
<CollapseAnimation Type="InOutElastic" />
</telerik:RadComboBox>
I’m using a web service to feed the search as you type combo box on my page. If the search returns 0 results I get the following error:
Microsoft Jscript runtime error: ‘Items’ is null or not an object
It works fine if results are returned. Below is the code for the RadComboBox and below that is the web service method I’m using. Any assistance would be greatly appreciated.
Experienced this problem with both 2010 Q1 and now Q2 Beta.
RadComboBox Snippet:
<telerik:RadComboBox ID="rcmbClients" runat="server" EnableLoadOnDemand="true"
ShowMoreResultsBox="true" EnableVirtualScrolling="true"
TabIndex="1" EnableItemCaching="true" EnableViewState="false" EmptyMessage="-- enter text --"
NoWrap="true" ShowWhileLoading="false"
OnSelectedIndexChanged="rcmbClients_SelectedIndexChanged"
AutoPostBack="true" Width="500" WebServiceSettings-Method="GetFilteredClients"
Filter="Contains" ItemRequestTimeout="300" WebServiceSettings-Path="~/RadService.svc"
AllowCustomText="true">
</telerik:RadComboBox>
Web Service Snippet:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class RadService
{
[OperationContract]
public RadComboBoxData GetFilteredClients(RadComboBoxContext context)
{
try
{
RadComboBoxData result = new RadComboBoxData();
ClientBL clientBL = new ClientBL(); IList<ShortClient> clients = clientBL.GetFilteredShortClients(context.Text.Replace("%", "[%]").Replace("&squote", "[']"));
IEnumerable<RadComboBoxItemData> allDataItems = from client in clients
select new RadComboBoxItemData()
{
Text = client.DisplayName,
Value = client.ID.ToString()
};
int numberOfItems = context.NumberOfItems;
IEnumerable<RadComboBoxItemData> pageOfDataItems = allDataItems.Skip(numberOfItems).Take(500);
result.Items = pageOfDataItems.ToArray();
int endOffSet = numberOfItems + pageOfDataItems.Count();
int totalCount = allDataItems.Count();
if (endOffSet == totalCount)
result.EndOfItems = false;
result.Message = String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffSet, totalCount);
return result;
}
catch (Exception ex)
{
string target = context.Text;
LogManager logManager = new LogManager();
logManager.Log(TraceEventType.Error, "Search Criteria Submitted By User: \"" + context.Text + "\"" + Environment.NewLine + ex.Message.ToString());
throw;
}
}