I'm selecting the initial tab in javascript and while the tab gets selected and the RadPageView gets selected, a postback does not occur to load the page.Clicking on the other tab will load that page and clicking back to the original tab will then load that page as well. Is there another way to select the tab and cause a postback?
Thanks
<%@ Page Language="C#" Inherits="TestPage" CodeBehind="TestPage.aspx.cs" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
>Title</
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
style
=
"height: 100%"
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rtsCCC"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rtsCCC"
></
telerik:AjaxUpdatedControl
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rmpCCC"
></
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadTabStrip
runat
=
"server"
ID
=
"rtsCCC"
RenderMode
=
"Lightweight"
MultiPageID
=
"rmpCCC"
Style
=
"line-height: 0"
AutoPostBack
=
"True"
OnClientLoad
=
"OnTabStripLoaded"
>
<
Tabs
>
<
telerik:RadTab
runat
=
"server"
Text
=
"Tab1"
Value
=
"t1"
/>
<
telerik:RadTab
runat
=
"server"
Text
=
"Tab2"
Value
=
"t2"
/>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
runat
=
"server"
ID
=
"rmpCCC"
RenderSelectedPageOnly
=
"True"
Height
=
"100%"
>
<
telerik:RadPageView
runat
=
"server"
ID
=
"rpvTab1"
Height
=
"100%"
Style
=
"overflow: hidden"
>
Tab1 content
</
telerik:RadPageView
>
<
telerik:RadPageView
runat
=
"server"
ID
=
"rpvTab2"
Height
=
"100%"
Style
=
"overflow: hidden"
>
Tab2 content
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
form
>
<
script
type
=
"text/javascript"
>
var tabStrip = null;
function OnTabStripLoaded(sender)
{
tabStrip = sender;
setTimeout(function () {
var tab = tabStrip.findTabByValue("t2");
tab.select();
}, 1000);
}
</
script
>
</
body
>
</
html
>
I have a RadCombobox on an ASP.net page with VB.net code-behind. There is a RadButton near the RadCombobox that is set up to update the RadCombobox with values from a database table. When clicking on the RadButton, a query is executed which returns a Dataset of the results and the dataset is used to populate an Array List and the Array List is used as the Data Source for the RadCombobox and then DataBind for RadCombobox is called.
I am using the Array List as the Data Source for the RadCombobox because "ALL" needs to be the first item in the RadCombobox.
I would like to be able to use the RadAjaxLoadingPanel on the RadCombobox and RadButton because the update will take a few minutes and need something to show the user that the update process is running. With the RadAjaxLoadingPanel used on the RadButton, it prevents the user from clicking on the RadButton again while the update process is running.
The problem that I am having when using the RadAjaxLoadingPanel is that after the update has completed that the RadCombobox is showing any new values. I have to refresh the page to get it to show new values.
Please help me to get this to work with the RadAjaxLoadingPanel. Thanks!
Here is how the AjaxManager is setup:
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
EnablePageHeadUpdate
=
"False"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadAjaxManager1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rcbbSupplierCode"
LoadingPanelID
=
"comboboxLoadingPanel"
></
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"rbtnUpdateSuppCodes"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rbtnUpdateSuppCodes"
LoadingPanelID
=
"buttonLoadingPanel"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
Here is the code for the RadCombobox, RadButton and the Loading Panels:
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"comboboxLoadingPanel"
></
telerik:RadAjaxLoadingPanel
>
<
telerik:RadComboBox
ID
=
"rcbbSupplierCode"
runat
=
"server"
MaxHeight
=
"350px"
OnClientLoad
=
"textBoxLoadValidCharsOnly"
Width
=
"240px"
AutoPostBack
=
"true"
RenderMode
=
"Lightweight"
Filter
=
"StartsWith"
MarkFirstMatch
=
"True"
EnableTextSelection
=
"true"
AllowCustomText
=
"false"
onpaste
=
"return false"
/>
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"buttonLoadingPanel"
></
telerik:RadAjaxLoadingPanel
>
<
telerik:RadButton
ID
=
"rbtnUpdateSuppCodes"
runat
=
"server"
Text
=
"Update Supplier Codes"
RenderMode
=
"Lightweight"
>
</
telerik:RadButton
>
Sincerely,
Keith Jackson
How do I set the data source for a detail table in a hierarchical grid using client side code?
I can see that you can set the master table data source as follows, but how and when do I load the child data into the detail tables?
<script type="text/javascript">
function pageLoad() {
var data =
[
{ "ID": 1, "Text": "Text1" },
{ "ID": 2, "Text": "Text2" }
];
var mtv = $find("RadGrid1").get_masterTableView();
mtv.set_dataSource(data);
mtv.dataBind();
}
</script>
hello
i am trying to implement a radgrid with filtering controls; one (or more, hopefully) column should be filtered using a checkbox list
here is the ascx code:
<
telerik:RadGrid
runat
=
"server"
AllowFilteringByColumn
=
"True"
FilterType
=
"Combined"
DataSourceID
=
"SqlDataSource1"
AllowPaging
=
"True"
PageSize
=
"10"
CellSpacing
=
"0"
GridLines
=
"None"
Skin
=
"Bootstrap"
HeaderStyle-Font-Bold
=
"true"
AutoGenerateColumns
=
"False"
ID
=
"subFilesGrid"
EnableViewState
=
"true"
OnPageIndexChanged
=
"subFilesGrid_OnPageIndexChanged"
onitemcommand
=
"subFilesGrid_ItemCommand"
OnFilterCheckListItemsRequested
=
"subFilesGrid_FilterCheckListItemsRequested"
>
<
MasterTableView
DataKeyNames
=
"nome"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
></
CommandItemSettings
>
<
RowIndicatorColumn
Visible
=
"True"
FilterControlAltText
=
"Filter RowIndicator column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
Visible
=
"True"
FilterControlAltText
=
"Filter ExpandColumn column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridButtonColumn
Text
=
"Download"
CommandName
=
"dloadFile"
UniqueName
=
"dcCol"
></
telerik:GridButtonColumn
>
<
telerik:GridBoundColumn
DataField
=
"originalname"
HeaderText
=
"File Name"
UniqueName
=
"FileName"
HeaderStyle-Width
=
"150px"
AllowFiltering
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"dinfo"
HeaderText
=
"Description"
HeaderStyle-Width
=
"180px"
UniqueName
=
"column"
AllowFiltering
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"FileType"
HeaderText
=
"File Type"
HeaderStyle-Width
=
"150px"
UniqueName
=
"FileType"
FilterCheckListEnableLoadOnDemand
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
DataField
=
"date"
HeaderText
=
"Submission Date"
HeaderStyle-Width
=
"180px"
PickerType
=
"DatePicker"
FilterDateFormat
=
"yyyy-MM-dd"
DataFormatString
=
"{0:yyyy-MM-dd HH:mm}"
>
</
telerik:GridDateTimeColumn
>
<
telerik:GridTemplateColumn
DataField
=
"sName"
HeaderText
=
"Submitter"
UniqueName
=
"column2"
>
<
ItemTemplate
>
<%# SetSubmitter(Eval("sName"))%>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"status"
HeaderText
=
"Status"
UniqueName
=
"column3"
>
<
ItemTemplate
>
<%# SetStatus(Eval("status"))%>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
<
WebServiceSettings
>
<
ODataSettings
InitialContainerName
=
""
></
ODataSettings
>
</
WebServiceSettings
>
</
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
<
WebServiceSettings
>
<
ODataSettings
InitialContainerName
=
""
></
ODataSettings
>
</
WebServiceSettings
>
</
HeaderContextMenu
>
</
telerik:RadGrid
>
and here is code-behind for filling the checkbox list
protected void subFilesGrid_FilterCheckListItemsRequested(object sender, GridFilterCheckListItemsRequestedEventArgs e)
{
string DataField = (e.Column as IGridDataColumn).GetActiveDataField();
e.ListBox.Items.Clear();
e.ListBox.AppendDataBoundItems = false;
/*e.ListBox.DataSource = GetDataTable(DataField);
e.ListBox.DataKeyField = DataField;
e.ListBox.DataTextField = DataField;
e.ListBox.DataValueField = DataField;
e.ListBox.DataBind();*/
string query = "SELECT type as FileType FROM [ICOS].[dbo].[FileType] where id_filetype!=20";
// string.Format("SELECT type as FileType FROM [ICOS].[dbo].[FileType] where id_filetype!=20", field);
SqlConnection cn = new SqlConnection(conn);
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = query;
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
e.ListBox.Items.Add(new RadListBoxItem(rd["FileType"].ToString()));
}
e.ListBox.DataTextField = DataField;
e.ListBox.DataValueField = DataField;
e.ListBox.DataBind();
rd.Close();
cn.Close();
e.ListBox.ShowCheckAll = false;
}
now, when loading the page, an unexpected item is displayed: ResourceNotFound#CheckListBox:CheckAll (you can see it here)
i have followed the steps showed in this page
Thanx in advance
Diego
Hello, can you convert this code into client side binding?
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MyNamespaceGrid.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title id="HTMLTITLE">Default</title>
<link href="/CSS/jquery-ui.min.css" type="text/css" rel="stylesheet" media="screen" />
<link href="/CSS/jquery-ui.structure.min.css" type="text/css" rel="stylesheet" media="screen" />
<link href="/CSS/jquery-ui.theme.min.css" type="text/css" rel="stylesheet" media="screen" />
<script src="/CSS/jquery-1.4.2.min.js"></script>
<style type="text/css">
.HeaderGrey {
background-color: #939da2 !important;
background-image: none !important;
color: White !important;
border-right: 1px solid white !important;
font-weight: bold !important;
padding-top: 10px !important;
padding-bottom: 10px !important;
}
.SubHeaderGrey {
background-color: #A9B4B9 !important;
background-image: none !important;
color: White !important;
border-right: 1px solid white !important;
font-weight: bold !important;
}
.HeaderGreyNoBorder {
background-color: #939da2 !important;
background-image: none !important;
color: White !important;
font-weight: bold !important;
padding-top: 10px !important;
padding-bottom: 10px !important;
}
.SubHeaderGreyNoBorder {
background-color: #A9B4B9 !important;
background-image: none !important;
color: White !important;
font-weight: bold !important;
border-right: 1px solid #A9B4B9 !important;
}
.BlueText {
color: Blue !important;
}
.rgPager, .rgPager a {
font-family: Verdana, Helvetica, Arial, sans-serif !important;
}
.rgWrap {
font-family: Verdana, Helvetica, Arial, sans-serif !important;
}
div.RadGrid .rgRow td,
div.RadGrid .rgAltRow td {
padding: 5px;
}
.RadGrid_Default .rgMasterTable td.rgGroupCol, .RadGrid_Default .rgMasterTable td.rgExpandCol {
border-color: white !important;
background: white none !important;
}
.rgDetailTable {
border: none !important;
}
.rgCollapse {
background-image: url('/CSS/Images/ui-icons_469bdd_256x240minus.png') !important;
background-position: 0px 0px !important;
}
.rgExpand {
background-image: url('/CSS/Images/ui-icons_469bdd_256x240plus.png') !important;
background-position: 0px 0px !important;
}
</style>
<script type="text/javascript">
function AddArrowIcons(sender, args) {
var column = args.get_column();
switch (column.get_uniqueName()) {
case "ExpandColumn":
break;
default:
column
.get_element()
.innerHTML +=
" <span class=\"ui-icon ui-icon-triangle-2-n-s\" style=\"float:right;-webkit-transform: scale(2);-ms-transform: scale(2);background-image: url(/CSS/images/ui-icons_ffffff_256x240.png)\"></span>"; //setting new HeaderText
break;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="padding-left: 0px">
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<table>
<tr>
<td>Person Type:</td>
<td>
<asp:DropDownList runat="server" Width="175px" ID="ddlPersonType">
<asp:ListItem Selected="True" Value="Parent">Parent</asp:ListItem>
<asp:ListItem Value="SubAccount">Sub Account</asp:ListItem>
<asp:ListItem Value="Individual">Individual</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td>SIN Number - last 4 digits:</td>
<td>******<asp:TextBox runat="server" ID="txtSINNumber" MaxLength="4" Width="90px"></asp:TextBox></td>
</tr>
<tr>
<td>Name on Account:</td>
<td>
<asp:TextBox runat="server" ID="txtName" Width="175px"></asp:TextBox></td>
</tr>
<tr>
<td>Staus:</td>
<td>
<asp:DropDownList runat="server" Width="175px" ID="ddlStatus">
<asp:ListItem Selected="True" Value="All"> All </asp:ListItem>
<asp:ListItem Value="Normal">Normal</asp:ListItem>
<asp:ListItem Value="Expired">Expired</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td>
<asp:Button ID="btnFilter" Text="Filter" runat="server" OnClick="btnFilter_OnClick" class="btn110x21" />
</td>
<td>
<span class="ui-icon ui-icon-close" style="float: left; background-image: url(/CSS/images/ui-icons_222222_256x240.png)"></span>
<asp:LinkButton runat="server" ID="btnClearFilter" OnClick="btnClearFilter_OnClick" Text="Reset"></asp:LinkButton></td>
</tr>
</table>
<div style="padding-top: 10px">
<telerik:RadGrid ID="RadGrid2" runat="server" Width="1100px"
OnDetailTableDataBind="RadGrid1_DetailTableDataBind" AutoGenerateColumns="False" ShowStatusBar="False" PageSize="3"
AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" GridLines="None" OnItemDataBound="RadGrid2_OnItemDataBound" AllowCustomPaging="False">
<PagerStyle Mode="NextPrevAndNumeric" Position="Bottom" PageSizeControlType="RadComboBox"></PagerStyle>
<MasterTableView HierarchyLoadMode="ServerBind" DataKeyNames="ParentAccountID,SinNumber,PersonType" Name="Parent" ExpandCollapseColumn-Display="false"
Font-Names="Verdana,Helvetica,Arial, sans-serif" Font-Size="12px">
<Columns>
<telerik:GridExpandColumn UniqueName="ExpandColumn" HeaderStyle-CssClass="HeaderGreyNoBorder"></telerik:GridExpandColumn>
<telerik:GridBoundColumn HeaderText="Person Type" HeaderButtonType="TextButton"
DataField="PersonType" UniqueName="PersonType" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="HeaderGrey">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn SortExpression="SinNumber" HeaderText="SIN Number" HeaderButtonType="TextButton"
UniqueName="SinNumber" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="HeaderGrey">
<ItemTemplate>
<asp:HyperLink runat="server" ID="HyperLink2" CssClass="BlueText" Text='<%# Eval("SinNumber") %>' NavigateUrl="Demo.aspx">
</asp:HyperLink>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn SortExpression="ParentAccountID" HeaderText="ParentAccountID" HeaderButtonType="TextButton"
DataField="ParentAccountID" UniqueName="ParentAccountID" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="AccountHolderName" HeaderText="Name" HeaderButtonType="TextButton"
DataField="AccountHolderName" UniqueName="AccountHolderName" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="HeaderGrey">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Status" HeaderText="Status" HeaderButtonType="TextButton"
DataField="Status" UniqueName="Status" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="HeaderGrey">
</telerik:GridBoundColumn>
</Columns>
<SortExpressions>
<telerik:GridSortExpression FieldName="AccountHolderName"></telerik:GridSortExpression>
</SortExpressions>
<DetailTables>
<telerik:GridTableView DataKeyNames="ParentAccountID,SinNumber,PersonType" Font-Names="Verdana,Helvetica,Arial, sans-serif" Font-Size="12px">
<Columns>
<telerik:GridBoundColumn SortExpression="PersonType" HeaderText="Person Type" HeaderButtonType="TextButton"
DataField="PersonType" UniqueName="PersonType" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="SubHeaderGrey" HeaderStyle-Width="160px">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn SortExpression="SinNumber" HeaderText="SIN Number" HeaderButtonType="TextButton"
UniqueName="SinNumber" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="SubHeaderGrey">
<ItemTemplate>
<asp:HyperLink runat="server" ID="HyperLink1" CssClass="BlueText" Text='<%# Eval("SinNumber") %>' NavigateUrl="Demo.aspx">
</asp:HyperLink>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn SortExpression="ParentAccountID" HeaderText="ParentAccountID" HeaderButtonType="TextButton"
DataField="ParentAccountID" UniqueName="ParentAccountID" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="AccountHolderName" HeaderText="Name" HeaderButtonType="TextButton"
DataField="AccountHolderName" UniqueName="AccountHolderName" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="SubHeaderGrey">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Status" HeaderText="Status" HeaderButtonType="TextButton"
DataField="Status" UniqueName="Status" ItemStyle-HorizontalAlign="Left" HeaderStyle-CssClass="SubHeaderGrey">
</telerik:GridBoundColumn>
</Columns>
<SortExpressions>
<telerik:GridSortExpression FieldName="AccountHolderName"></telerik:GridSortExpression>
</SortExpressions>
</telerik:GridTableView>
</DetailTables>
</MasterTableView>
<ClientSettings>
<ClientEvents OnColumnCreated="AddArrowIcons" />
</ClientSettings>
</telerik:RadGrid>
</div>
</div>
</form>
</body>
</html>
Default.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using Telerik.Web.UI;
namespace MyNamespaceGrid
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var accounts = GetFitleredAccounts();
RadGrid2.DataSource = accounts;
}
protected void RadGrid2_OnItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem && e.Item.OwnerTableView.Name == "Parent")
{
GridDataItem item = (GridDataItem)e.Item;
if (item.GetDataKeyValue("PersonType").ToString() == "Individual")
{
(item["ExpandColumn"].Controls[0]).Visible = false;
}
}
}
protected void btnFilter_OnClick(object sender, EventArgs e)
{
RadGrid2.DataSource = GetFitleredAccounts();
RadGrid2.Rebind();
}
protected void btnClearFilter_OnClick(object sender, EventArgs e)
{
txtSINNumber.Text = "";
txtName.Text = "";
ddlStatus.SelectedIndex = 0;
ddlPersonType.SelectedIndex = 0;
var accounts = GetAccounts();
RadGrid2.DataSource = accounts;
RadGrid2.Rebind();
}
protected void RadGrid1_DetailTableDataBind(object sende, GridDetailTableDataBindEventArgs e)
{
if (e.DetailTableView.ParentItem.DataItem == null)
{
int ParentAccountId = (int)e.DetailTableView.ParentItem.GetDataKeyValue("ParentAccountID");
List<ParentAccount> row = (List<ParentAccount>)e.DetailTableView.DataSource;
ParentAccount r = row.Where(z => z.ParentAccountID == ParentAccountId).FirstOrDefault();
e.DetailTableView.DataSource = r.SubAccounts;
}
else
e.DetailTableView.DataSource = ((ParentAccount)e.DetailTableView.ParentItem.DataItem).SubAccounts;
}
private List<ParentAccount> GetFitleredAccounts()
{
var accounts = GetAccounts();
// is there a better way to initalize this
var result = accounts.Where(s => s.ParentAccountID != null);
#region Parent Filter
if (ddlPersonType.Text == "Parent")
{
result = accounts.Where(s => s.PersonType == "Parent");
if (!string.IsNullOrEmpty(txtSINNumber.Text))
{
result = result.Where(s => s.SinNumber.EndsWith(txtSINNumber.Text));
}
if (!string.IsNullOrEmpty(txtName.Text))
{
result = result.Where(s => s.AccountHolderName.ToUpper().Contains(txtName.Text.ToUpper()));
}
if (ddlStatus.SelectedIndex != 0)
{
result = result.Where(s => s.Status == ddlStatus.Text);
}
return result.ToList();
}
#endregion
#region Individual Filter
if (ddlPersonType.Text == "Individual")
{
result = accounts.Where(s => s.PersonType == "Individual");
if (!string.IsNullOrEmpty(txtSINNumber.Text))
{
result = result.Where(s => s.SinNumber.EndsWith(txtSINNumber.Text));
}
if (!string.IsNullOrEmpty(txtName.Text))
{
result = result.Where(s => s.AccountHolderName.ToUpper().Contains(txtName.Text.ToUpper()));
}
if (ddlStatus.SelectedIndex != 0)
{
result = result.Where(s => s.Status == ddlStatus.Text);
}
return result.ToList();
}
#endregion
#region Sub Account Filter
if (ddlPersonType.Text == "SubAccount")
{
//inital dataset based on account type
var resultList = accounts.Where(t => t.SubAccounts != null).ToList();
if (!string.IsNullOrEmpty(txtSINNumber.Text))
{
// Remove items for the parent table
for (int i = resultList.Count() - 1; i >= 0; i--)
{
bool foundMatch = false;
if (resultList[i].SubAccounts != null)
{
foreach (var sub in resultList[i].SubAccounts)
{
if (sub.SinNumber.EndsWith(txtSINNumber.Text))
{
foundMatch = true;
}
}
}
if (foundMatch == false)
resultList.Remove(resultList[i]);
}
//filter child list
resultList.ForEach(
c => c.SubAccounts.RemoveAll(i => !i.SinNumber.EndsWith(txtSINNumber.Text)));
return resultList;
}
if (!string.IsNullOrEmpty(txtName.Text))
{
// Remove items for the parent table
for (int i = resultList.Count() - 1; i >= 0; i--)
{
bool foundMatch = false;
if (resultList[i].SubAccounts != null)
{
foreach (var sub in resultList[i].SubAccounts)
{
if (sub.AccountHolderName.ToUpper().Contains(txtName.Text.ToUpper()))
{
foundMatch = true;
}
}
}
if (foundMatch == false)
resultList.Remove(resultList[i]);
}
//filter child list
resultList.ForEach(
c =>
c.SubAccounts.RemoveAll(
i => !i.AccountHolderName.ToUpper().Contains(txtName.Text.ToUpper())));
return resultList;
}
if (ddlStatus.SelectedIndex != 0)
{
// Remove items for the parent table
for (int i = resultList.Count() - 1; i >= 0; i--)
{
bool foundMatch = false;
if (resultList[i].SubAccounts != null)
{
foreach (var sub in resultList[i].SubAccounts)
{
if (sub.Status == ddlStatus.Text)
{
foundMatch = true;
}
}
}
if (foundMatch == false)
resultList.Remove(resultList[i]);
}
//filter child list
resultList.ForEach(c => c.SubAccounts.RemoveAll(i => i.Status != ddlStatus.Text));
return resultList;
}
}
#endregion
return accounts;
}
private List<ParentAccount> GetAccounts()
{
#region Hardcoded data
List<ParentAccount> accounts = new List<ParentAccount>
{
new ParentAccount
{
ParentAccountID = 2,
PersonType = "Individual",
AccountHolderName = "Grace Nix",
SinNumber = "7501",
Status = "Normal"
},
new ParentAccount
{
ParentAccountID = 3,
PersonType = "Parent",
AccountHolderName = "Andrew Mill",
SinNumber = "7535",
Status = "Normal",
SubAccounts = new List<SubAccount>
{
new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Joe Danny",
SinNumber = "7600",
Status = "Normal"
},
new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Chris Robminson",
SinNumber = "7626",
Status = "Normal"
}
,new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Alex Fisher",
SinNumber = "7600",
Status = "Normal"
},
new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Mark Reece",
SinNumber = "7626",
Status = "Normal"
}
,
new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Dale Morison",
SinNumber = "7600",
Status = "Expired"
},
new SubAccount
{
ParentAccountID = 3,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Rob Mason",
SinNumber = "7626",
Status = "Normal"
}
}
}
,
new ParentAccount
{
ParentAccountID = 4,
PersonType = "Parent",
AccountHolderName = "Wes Allman",
SinNumber = "7501",
Status = "Normal",
SubAccounts = new List<SubAccount>
{
new SubAccount
{
ParentAccountID = 4,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Gin Un",
SinNumber = "2222",
Status = "Normal"
},
new SubAccount
{
ParentAccountID = 4,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Mick Colt",
SinNumber = "3333",
Status = "Expired"
}
}
},
new ParentAccount
{
ParentAccountID = 6,
PersonType = "Parent",
AccountHolderName = "Tracy Anderson",
SinNumber = "7535",
Status = "Expired",
SubAccounts = new List<SubAccount>
{
new SubAccount
{
ParentAccountID = 6,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Jon Wex",
SinNumber = "7600",
Status = "Expired"
},
new SubAccount
{
ParentAccountID = 6,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Ruan Juan",
SinNumber = "7626",
Status = "Normal"
}
}
},
new ParentAccount
{
ParentAccountID = 18,
PersonType = "Parent",
AccountHolderName = "Marie Wilson",
SinNumber = "3333",
Status = "Normal",
SubAccounts = new List<SubAccount>
{
new SubAccount
{
ParentAccountID = 18,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Ron Ottan",
SinNumber = "7600",
Status = "Normal"
},
new SubAccount
{
ParentAccountID = 18,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Will Naw",
SinNumber = "7626",
Status = "Normal"
}
}
},
new ParentAccount
{
ParentAccountID = 19,
PersonType = "Parent",
AccountHolderName = "Dan Can",
SinNumber = "7535",
Status = "Normal",
SubAccounts = new List<SubAccount>
{
new SubAccount
{
ParentAccountID = 19,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Esther Cran",
SinNumber = "3333",
Status = "Normal"
},
new SubAccount
{
ParentAccountID = 19,
SubAccountID = 12,
PersonType = "Sub Account",
AccountHolderName = "Paul Max",
SinNumber = "7626",
Status = "Normal"
}
}
}
};
#endregion
return accounts;
}
}
public class ParentAccount
{
public int ParentAccountID { get; set; }
public string PersonType { get; set; }
public string SinNumber { get; set; }
public string AccountHolderName { get; set; }
public string Status { get; set; }
public List<SubAccount> SubAccounts;
}
public class SubAccount
{
public int SubAccountID { get; set; }
public int ParentAccountID { get; set; }
public string PersonType { get; set; }
public string SinNumber { get; set; }
public string AccountHolderName { get; set; }
public string Status { get; set; }
}
}
Using the code mentioned in your article here - http://docs.telerik.com/devtools/aspnet-ajax/controls/spreadsheet/client-side-programming/events/onclientchange
We have a simple aspx page with RadSpreadsheet object on it, along with the code mentioned in above article for onClientChange, but that never gets hit.
What are we missing?
Support,
OnClientEnded, i used this event to trigger a java script at the end of a Play.
Is there any way i could run a script at the end of video play.
If you have any example please share.
Thanks
Hi,
I will try to explain the scenario the best way possible. I hope you can help me.
I have a page which has one user control with filters. Those filters are displayed dynamically with some information we have stored in the database. Depending on what you select in those filters, the page has to load dynamically one or more user controls with the results (each one will have a radgrid). For example, if in the filter "department", you select the departments A, B, C and D, after clicking in "Submit", we have to create four different result user controls because each department has different columns to display. So having one non-dynamic user control with a radgrid is not an option. Also I have tried having a non-dynamic user control, but creating radgrids dynamically and the results wasn't good. I have to say that I have this scenario fully working with asp.net gridviews, but I need to have better performance and more functionality. This is the main reason of using this telerik control.
I don't have any problem loading the data, but with the radgrid events (sorting, paging), the whole page does a postback and the radgrids are not there.
I'm using advanced server side binding, but I have tried simple binding too with the same result.
- The relevant code in the page is. This is called when you select the filters and you click in "Submit":
01.
public
void
GetReports(List<ReportModel> reports)
02.
{
03.
int
count = 1;
04.
foreach
(ReportModel report
in
reports)
05.
{
06.
DataSet ds = ReportData.GetReportData(report);
// If there's no data, this function always return a dataset with one datable informing that there's no data available
07.
foreach
(DataTable dt
in
ds.Tables)
08.
{
09.
ReportResults control =
this
.LoadControl(
"~/Reports/Controls/ReportResults.ascx"
)
as
ReportResults;
10.
control.ID =
string
.Format(
"reportResults{0}"
, count);
11.
control.Data = data;
12.
this
.pnlResults.Controls.Add(control);
13.
}
14.
}
15.
}
- The client side code in the user control:
<
telerik:RadAjaxPanel
id
=
"pnlReport"
runat
=
"server"
cssclass
=
"panel-body nopadding"
style
=
"width: 100%; overflow: auto;"
>
<
telerik:radgrid
id
=
"radgrid"
runat
=
"server"
cssclass
=
"table table-striped table-hover"
borderstyle
=
"Solid"
autogeneratecolumns
=
"true"
allowpaging
=
"true"
allowsorting
=
"true"
rendermode
=
"Lightweight"
skin
=
"Bootstrap"
onneeddatasource
=
"radgrid_NeedDataSource"
>
<
pagerstyle
mode
=
"NextPrevNumericAndAdvanced"
/>
</
telerik:radgrid
>
</
telerik:RadAjaxPanel
>
- The server side code in the user control:
01.
public
DataTable Data
02.
{
03.
get
04.
{
05.
return
(DataTable)
this
.ViewState[
"Data"
];
06.
}
07.
set
08.
{
09.
this
.ViewState[
"Data"
] = value;
10.
}
11.
}
12.
13.
14.
protected
void
radgrid_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
15.
{
16.
(sender
as
RadGrid).DataSource =
this
.Data;
//I have already debugged the code and I have seen that this property has data and it's displayed when I click in "Submit"
17.
}
Thank you for your help.
in myDbSchedulerProvider (through webservice) > GetAppointments
I can set apt.Start , apt.Description , apt.ID , apt.Subject and those carry forward to the page.
apt.Subject = dr(
"Title"
)
apt.Start = DateTime.SpecifyKind(StartTime, DateTimeKind.Utc)
apt.Description = dr(
"Content"
)
apt.CssClass =
"mapping"
& dr(
"Category"
).replace(
";"
,
""
)
apt.ForeColor = Drawing.Color.Beige
apt.BackColor = Drawing.Color.Coral
apt.Attributes(
"class"
) =
"mapping"
& dr(
"Category"
).replace(
";"
,
""
)
but if I set any of these values, they do not carry forward.
apt.CssClass , apt.ForeColor , apt.BackColor , apt.Attributes("class")
in the click appointment javascript event I alert these values and they are blank or null
but as I said, if I alert the other ones they give correct values.
function
OnClientAppointmentClick(sender, args) {
alert(apt.get_start().format(
"MM/dd/yyyy HH:mm"
)) ;
//<-- good value
alert(apt.get_description());
//<-- good value
alert(apt.get_cssClass());
//<-- blank value
alert(apt.get_backColor());
//<-- null value
etc etc