Dear Team
I am Using telerik Rad grid in My Web application .I have some problem in click add new Record. Whenever I clicked add new Record link in grid it is take long Time. Why, I didn’t find .Please give a Good Solution.My Code Given Below..I am using Role Based Contion Checking in Code Behind..
<div style="overflow: scroll; height: 245px;width:100%">
<asp:UpdatePanel ID="UpdatePanel11" runat="server">
<ContentTemplate>
<table width="100%" style="margin-left: 10px">
<tr>
<td>
<telerik:RadGrid ID="radgridActivity" runat="server" Skin="Vista" Width="650px" Height="300px"
AutoGenerateColumns="False" Visible="true" AutoGenerateEditColumn="true" ShowStatusBar="false" GridLines="None" OnInsertCommand="Activity_InsertCommand" AllowPaging="True"
OnNeedDataSource="Activity_NeedDataSource" OnItemDataBound="radgridActivity_ItemDataBound" OnItemCreated="radgridActivity_ItemCreated"
AllowSorting="True" PageSize="10" OnUpdateCommand="Activity_UpdateCommand" OnDeleteCommand="RadGridActivity_DeleteCommand" >
<MasterTableView EditMode="PopUp" DataKeyNames="activityid" AutoGenerateColumns="false" AllowSorting="true"
EditFormSettings-PopUpSettings-ScrollBars="Vertical" EditFormSettings-PopUpSettings-Height="200px">
Code Bind:
protected void radgridActivity_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridTextBoxColumnEditor txtRate = (GridTextBoxColumnEditor)editedItem.EditManager.GetColumnEditor("Firstname");
if (cmbCustomerId.Text != "Select a Client..")
txtRate.TextBoxControl.Text = cmbCustomerId.Text;
TextBox CustomerName = editedItem["Firstname"].Controls[0] as TextBox;
CustomerName.Enabled = false;
TextBox ActStatus = editedItem["status"].Controls[0] as TextBox;
ActStatus.Enabled = false;
if (e.Item.DataSetIndex != -1)
{
((RadComboBox)e.Item.FindControl("RadComboBox1")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["actiontype"].ToString();
((RadComboBox)e.Item.FindControl("RadComboBox2")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["nextactiontype"].ToString();
((RadComboBox)e.Item.FindControl("cmbPriority")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["Priority"].ToString();
((RadComboBox)e.Item.FindControl("cmbActivityFor")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["ActivityFor"].ToString();
((RadComboBox)e.Item.FindControl("cmbScheduledFor")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["ScheduledFor"].ToString();
((RadComboBox)e.Item.FindControl("cmbScheduleBy")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["ScheduleBy"].ToString();
((RadComboBox)e.Item.FindControl("cmbRecurringFreq")).SelectedValue = (e.Item.DataItem as System.Data.DataRowView)["RecurringFreq"].ToString();
}
}
if (e.Item is GridDataItem)
{
GridDataItem gridDataItem = (GridDataItem)e.Item;
Hashtable values = new Hashtable();
gridDataItem.ExtractValues(values);
string status = values["status"].ToString();
ImageButton btnDelete = gridDataItem["Delete"].Controls[0] as ImageButton;
ImageButton btnEdit = gridDataItem["Edit"].Controls[0] as ImageButton;
if (Session["sesUserType"].ToString() == "Sales Rep")
{
if (status.Equals("Submitted"))
{
btnDelete.ImageUrl = "Styles/Images/DeleteBin1.gif";
btnDelete.Enabled = false;
}
else
{
btnDelete.ImageUrl = "Styles/Images/DeleteBin.gif";
btnDelete.Enabled = true;
}
}
else
{
btnEdit.ImageUrl = "Styles/Images/EditWDT1.gif";
btnDelete.ImageUrl = "Styles/Images/DeleteBin1.gif";
btnDelete.Enabled = false;
btnEdit.Enabled = false;
}
}
}

<telerik:RadGrid ID="radGrid" AutoGenerateColumns="false" AllowSorting="true" OnNeedDataSource="radGrid_NeedDataSource" runat="server"> <ClientSettings> <Scrolling UseStaticHeaders="true" /> </ClientSettings> <MasterTableView TableLayout="Fixed"> <Columns> <telerik:GridBoundColumn DataField="Name" DataType="System.String" HeaderStyle-Width="20%" HeaderText="Name" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" AllowSorting="true" UniqueName="Name" /> <telerik:GridBoundColumn DataField="Email" DataType="System.String" HeaderStyle-Width="20%" HeaderText="Email" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" AllowSorting="true" UniqueName="Email" /> <telerik:GridButtonColumn ButtonType="PushButton" Text="Test Email" HeaderStyle-Width="5%" HeaderText="Test" HeaderStyle-HorizontalAlign="Center" CommandName="TestEmail" UniqueName="TestEmail" /> <telerik:GridBoundColumn DataField="Mobile" DataType="System.String" HeaderStyle-Width="20%" HeaderText="Mobile (SMS)" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" AllowSorting="true" UniqueName="Mobile" /> <telerik:GridButtonColumn ButtonType="PushButton" Text="Test SMS" HeaderStyle-Width="5%" HeaderText="Test" HeaderStyle-HorizontalAlign="Center" CommandName="TestSMS" UniqueName="TestSMS" /> </Columns> </MasterTableView></telerik:RadGrid>RadSlider assesmentSlider = (RadSlider)e.Item.FindControl("AssesmentSlider"); assesmentSlider.ItemType = SliderItemType.Item; //the databinding of the slider Vklass.IUP.MatrixAssesment assesment = ((Vklass.IUP.MatrixAssesment)e.Item.DataItem); assesmentSlider.Items.Add(new RadSliderItem("Inget", "")); RadSliderItem sliderItem1 = new RadSliderItem("1", assesment.Text1); assesmentSlider.Items.Add(sliderItem1); assesmentSlider.Items.Add(new RadSliderItem("2", assesment.Text2)); assesmentSlider.Items.Add(new RadSliderItem("3", assesment.Text3)); assesmentSlider.Items.Add(new RadSliderItem("4", assesment.Text4)); assesmentSlider.Items.Add(new RadSliderItem("5", assesment.Text5)); assesmentSlider.ViewStateMode = System.Web.UI.ViewStateMode.Enabled; assesmentSlider.AutoPostBack = false; //The Javascript assesmentSlider.OnClientValueChanged = "OnClientValueChanged" + assesmentSlider.ClientID; assesmentSlider.OnClientSlideEnd = "OnClientSlideEnd" + assesmentSlider.ClientID; string tb1 = e.Item.FindControl("SelectedAssesmentValue").ClientID; string hiddenvalue = e.Item.FindControl("AssesmentText0").ClientID; string answered = e.Item.Parent.Parent.FindControl("Answered").ClientID; string jsfunction = "function " + assesmentSlider.OnClientValueChanged + "(obj,args){\nvar val = '" + hiddenvalue + "' \n$get('" + tb1 + "').value = $get(val.slice(0, -1)+obj.get_value()).value;\nif(obj.get_value() != '0'){\n $get('" + answered + "').value = 'True';\n }else{ \n$get('" + answered + "').value = 'False';\n }\n$get('UpdateDocument').click()\n}\n"; ; string jsfunction2 = "function " + assesmentSlider.OnClientSlideEnd + "(obj,args){\n obj.set_value=obj.get_trackPosition;\n}\n"; ;
I am using “ Telerik.Web.UI.dll 2009.2.826.20” in my desktopmodule of DNN site. This desktop module has RadGrid which allows user to filter Records based on criteria (Username, FirstName & LastName ) specified and user can select required record from grid display.
I am getting error "'RowSelected' is undefined" or “'null' is null or not an object” while filtering the records based on criteria. These errors occur occasionally, not always. It is working perfectly some times with out above said errors.
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="SelectUser.aspx.cs" Inherits="ACS.Buck.UK.Modules.UserManagement.DesktopModules_UserManagement_SelectUser" %>
<%
@ 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>Select Member</title>
<style type="text/css">
.FilterTable td{ font: normal 10px Arial, Verdana, Sans-serif; }
</style>
</
head>
<
body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblError" runat="server"></asp:Label>
<
telerik:RadGrid ID="GridMember" runat="server" CssClass="RadGrid" AllowSorting="True" ShowFooter="True" AllowPaging="True" AllowFilteringByColumn="True" AutoGenerateColumns="False" GridLines="None" Skin="Outlook" Width="100%" BorderStyle="None" PageSize="4" GroupingEnabled="False" OnPreRender="GridMember_PreRender" OnNeedDataSource="GridMember_NeedDataSource" onpageindexchanged="GridMember_PageIndexChanged" onpagesizechanged="GridMember_PageSizeChanged">
<
MasterTableView CssClass="MasterTable" DataKeyNames="UserID,Username,FirstName,LastName" ClientDataKeyNames="Username" BorderColor="#999999" BorderWidth="0px" CellPadding="1" GridLines="Vertical" Width="100%">
<Columns>
<telerik:GridBoundColumn DataField="Username" HeaderText="User ID" UniqueName="UserID">
<HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" Wrap="True" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LastName" HeaderText="Last Name" UniqueName="LastName">
<HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" Wrap="True" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="FirstName" HeaderText="First Name" UniqueName="FirstName">
<HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" Wrap="True" Width="220px" />
</telerik:GridBoundColumn>
</Columns>
<ExpandCollapseColumn Visible="False">
<HeaderStyle Width="19px" />
</ExpandCollapseColumn>
<RowIndicatorColumn Visible="False">
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
</MasterTableView>
<HeaderStyle CssClass="GridHeader"></HeaderStyle>
<GroupHeaderItemStyle CssClass="GroupHeader"></GroupHeaderItemStyle>
<ItemStyle CssClass="GridRow" BorderStyle="None" BorderWidth="0px"></ItemStyle>
<AlternatingItemStyle CssClass="GridRow"></AlternatingItemStyle>
<FooterStyle CssClass="GridFooter"></FooterStyle>
<PagerStyle CssClass="GridPager" Mode="NextPrevNumericAndAdvanced"
AlwaysVisible="True"></PagerStyle>
<ClientSettings >
<Scrolling UseStaticHeaders="True" ScrollHeight="" SaveScrollPosition="False"></Scrolling>
<Selecting AllowRowSelect="True" EnableDragToSelectRows="true"/>
<ClientEvents OnRowSelected="RowSelected" />
</ClientSettings>
<GroupPanel>
<PanelItemsStyle CssClass="GroupPanelItems"></PanelItemsStyle>
<PanelStyle CssClass="GroupPanel"></PanelStyle>
</GroupPanel>
<SelectedItemStyle Font-Bold="True" BackColor="LightSteelBlue" />
<FilterMenu CssClass="FilterTable" EnableViewState="False" HoverBorderColor="LightGray" SelectColumnBackColor="DarkGray" TextColumnBackColor="WhiteSmoke"></FilterMenu>
</
telerik:RadGrid>
</div>
</form>
</
body>
<
telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
var selected_member = "";
var oWnd = GetRadWindow();
function GetRadWindow()
{
var oWindow = null;
if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)
return oWindow;
}
function CloseAndReload()
{
oWnd.BrowserWindow.document.forms[0].selected_member.value = selected_member;
oWnd.BrowserWindow.document.forms[0].submit();
oWnd.Close();
}
function MemberSelected(rowIndex){
CloseAndReload();
}
function RowSelected(sender, args)
{
selected_member = args.getDataKeyValue(
"Username");
CloseAndReload();
}
</script>
</telerik:RadCodeBlock>
</
html>
partial class DesktopModules_UserManagement_SelectUser : DotNetNuke.Framework.PageBase //System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = GetLocaleString(
"SelectUserPageTitle");
GridMember.PageSize = 10;
GridMember.Columns[0].HeaderText = GetLocaleString(
"UserID_Label");
GridMember.Columns[1].HeaderText = GetLocaleString(
"LastName_Label");
GridMember.Columns[2].HeaderText = GetLocaleString(
"FirstName_Label");
GridMember.Columns[0].FilterImageToolTip = GetLocaleString(
"Filter_Label");
GridMember.Columns[1].FilterImageToolTip = GetLocaleString(
"Filter_Label");
GridMember.Columns[2].FilterImageToolTip = GetLocaleString(
"Filter_Label");
}
private string GetFilter(Telerik.Web.UI.GridColumn c, string cName)
{
//if (c.CurrentFilterValue == "") return "";
string fv = c.CurrentFilterValue.ToUpper(); // filter value
string f = "";
switch (c.CurrentFilterFunction)
{
case GridKnownFunction.Between:
f =
"";
break;
case GridKnownFunction.Contains:
f = cName +
" like '%" + fv + "%'";
break;
case GridKnownFunction.Custom:
f =
""; // ???
break;
case GridKnownFunction.DoesNotContain:
f = cName +
" not like '%" + fv + "%'";
break;
case GridKnownFunction.EndsWith:
f = cName +
" like '%" + fv + "'";
break;
case GridKnownFunction.EqualTo:
f = cName +
" = '" + fv + "'";
break;
case GridKnownFunction.GreaterThan:
f = cName +
" > '" + fv + "'";
break;
case GridKnownFunction.GreaterThanOrEqualTo:
f = cName +
" >= '" + fv + "'";
break;
case GridKnownFunction.IsEmpty:
f = cName +
" = ''";
break;
case GridKnownFunction.IsNull:
f = cName +
" is null";
break;
case GridKnownFunction.LessThan:
f = cName +
" < '" + fv + "'";
break;
case GridKnownFunction.LessThanOrEqualTo:
f = cName +
" <= '%" + fv + "%'";
break;
case GridKnownFunction.NoFilter:
f =
"";
break;
case GridKnownFunction.NotBetween:
f =
""; // ???
break;
case GridKnownFunction.NotEqualTo:
f = cName +
" <> '" + fv + "'";
break;
case GridKnownFunction.NotIsEmpty:
f = cName +
" <> ''";
break;
case GridKnownFunction.NotIsNull:
f = cName +
" is not null";
break;
case GridKnownFunction.StartsWith:
f = cName +
" like '" + fv + "%'";
break;
};
return f;
}
protected void GridMember_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
string f = "";
string userName = GetFilter(GridMember.Columns[0], "U.Username");
string firstName = GetFilter(GridMember.Columns[1], "U.LastName");
string lastName = GetFilter(GridMember.Columns[2], "U.FirstName");
if (userName != "") f = f + " AND " + userName;
if (firstName != "") f = f + " AND " + firstName;
if (lastName != "") f = f + " AND " + lastName;
ACS.Buck.UK.Modules.MemberShadow.
SqlDataProvider sqlDP = new ACS.Buck.UK.Modules.MemberShadow.SqlDataProvider();
DataTable dtUsers = new DataTable();
int UserID = (int) Session["UserID"];
DotNetNuke.Security.Roles.
RoleController obj = new RoleController();
string[] arrRoles = obj.GetRolesByUser(UserController.GetCurrentUserInfo().UserID, PortalSettings.PortalId);
if(arrRoles.Count()==0)
{
dtUsers = sqlDP.GetUsers(PortalSettings.PortalId, f);
GridMember.DataSource = dtUsers;
}
else
{
bool status = false;
foreach (string role in arrRoles)
{
if(Config.GetSetting("LimitedAdmin")==role)
{
status =
true;
}
}
if(status==true)
{
ACS.Buck.UK.Modules.UserManagement.
SqlDataProvider sqlDP1 = new ACS.Buck.UK.Modules.UserManagement.SqlDataProvider();
DataTable dtUser = sqlDP1.getUsersWithoutAdmin(PortalSettings.PortalId, f);
GridMember.DataSource = dtUser;
}
else
{
dtUsers = sqlDP.GetUsers(PortalSettings.PortalId, f);
GridMember.DataSource = dtUsers;
}
}
// GridMember.DataBind();
}
protected void Grid
Member_PreRender(object sender, EventArgs e)
{
GridFilterMenu menu = GridMember.FilterMenu;
// format is important and should be "|1|2|3|...|n|"
string UnWantedMenuItems = "|GreaterThan|LessThan|GreaterThanOrEqualTo|LessThanOrEqualTo|Between|NotBetween|IsEmpty|NotIsEmpty|IsNull|NotIsNull|";
int index = 0;
while (index < menu.Items.Count)
{
if (UnWantedMenuItems.Contains("|" + menu.Items[index].Text + "|"))
{
menu.Items.RemoveAt(index);
}
else
{
menu.Items[index].Text = GetLocaleString(menu.Items[index].Text);
//menu.Items[index].Text + index;
index++;
}
}
}
protected void GridMember_PageIndexChanged(object source, GridPageChangedEventArgs e)
{
GridMember.CurrentPageIndex = e.NewPageIndex;
}
protected void GridMember_PageSizeChanged(object source, GridPageSizeChangedEventArgs e)
{
if(e.NewPageSize < 1) {
e.Canceled =
true;
}
else {
GridMember.CurrentPageIndex = 0;
}
}
}