I've noticed some funny behavior when I combine the UseStaticHeaders and GridTemplateColumn configurations for the RadGrid.
The grid loses the header and the detail disappears on occasion as well.
Here is a snippet of code:
<
telerik:RadGrid
runat
=
"server"
ID
=
"gridSample"
AutoGenerateColumns
=
"false"
ShowHeader
=
"true"
ShowFooter
=
"false"
OnItemDataBound
=
"gridSample_ItemDataBound"
OnNeedDataSource
=
"gridSample_NeedDataSource"
>
<
ClientSettings
>
<
Scrolling
AllowScroll
=
"true"
ScrollHeight
=
"400px"
UseStaticHeaders
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
EnableNoRecordsTemplate
=
"true"
>
<
NoRecordsTemplate
>
<
asp:Label
runat
=
"server"
Text
=
"There is no file to review"
/>
</
NoRecordsTemplate
>
<
Columns
>
<
telerik:GridTemplateColumn
HeaderText
=
"Name"
UniqueName
=
"Name"
>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
Text='<%# Eval("LastName") + ", " + Eval("FirstName") + " " + Eval("MiddleName") %>' />
</
ItemTemplate
>
<
ItemStyle
Width
=
"45%"
HorizontalAlign
=
"Left"
/>
<
HeaderStyle
Width
=
"45%"
HorizontalAlign
=
"Left"
/>
</
telerik:GridTemplateColumn
>
.
.
.
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
I believe the sticking point is the use of static headers with the grid template columns. If I remove either the template columns or the UseStaticHeaders declarative, the problem goes away.
This is an older app that i am supporting and it is using the 2015.1.225.35 version of the assembly.I am using a RadGrid with batch edit mode. I want to have keyboard navigation turned on so that a user can tab through the columns in the current row. When this is turned on the default behavior is that when a user hits tab on the last control of a row, when there are additional rows in the grid, the user is navigated to the next row. What I want to prevent is the navigation to the next row when the last control in the edited row is currently being edited and the user presses tab. Is this possible? Is it possible to save that row edit if tab is pressed on that last control?
Thank you for your time.
Hello
in a combobox the user writes the city and the program should search for this city according to written characters obviously do a search in a sql table that has over 9000 records. I set of keywords to speed everything but I ask you, which of the two methods of code is more powerful?
Protected
Sub
luogoresidenza_ItemsRequested(sender
As
Object
, e
As
RadComboBoxItemsRequestedEventArgs)
Handles
luogoresidenza.ItemsRequested
Using Context
As
New
touristEntities
If
Not
[
String
].IsNullOrEmpty(e.Text)
Then
Dim
Query = (From c
In
Context.Tab_comuni_nazioni
Where c.c_descrizione.StartsWith(e.Text)
Order By c.c_descrizione
Select
c.c_idrecord, c.c_descrizione).ToList
Dim
query1 = Query.Skip(e.NumberOfItems).Take(10)
luogoresidenza.DataSource = query1
luogoresidenza.DataBind()
Dim
endOffset
As
Integer
= e.NumberOfItems + query1.Count()
Dim
totalCount
As
Integer
= Query.Count()
If
endOffset = totalCount
Then
e.EndOfItems =
True
End
If
e.Message = [
String
].Format(
"Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>"
, endOffset, totalCount)
End
If
End
Using
End
Sub
Or better to use a web service?
I'm experiencing an issue getting my UpdatePanel to work properly in a C# ASP.NET project. It's identical code to multiple other pages in my solution, but has unusual behavior on this page. The goal is simply to allow the user to change a radio button which then alters the visibility of various table rows further down in the UpdatePanel. Interestingly enough, the CheckBox works as expected.
In my current page, I have the following code:
<
asp:UpdatePanel
ID
=
"updatePanel"
runat
=
"server"
UpdateMode
=
"Conditional"
>
<
ContentTemplate
>
<
span
class
=
"stepTitle"
>Set Fluid Properties</
span
>
<
div
class
=
"calculateInnerDiv"
>
<
asp:RadioButtonList
ID
=
"FluidTypeList"
runat
=
"server"
AutoPostBack
=
"true"
RepeatDirection
=
"Horizontal"
TabIndex
=
"101"
OnSelectedIndexChanged
=
"FluidTypeList_Changed"
>
<
asp:ListItem
Text
=
""
Value
=
"Liquid"
/>
<
asp:ListItem
Text
=
""
Value
=
"Gas"
/>
<
asp:ListItem
Text
=
""
Value
=
"Steam"
/>
</
asp:RadioButtonList
>
<
asp:CheckBox
ID
=
"IsCompressibleCheckBox"
runat
=
"server"
AutoPostBack
=
"true"
Text
=
"Fluid Is Compressible"
Checked="<%# model.isCompressible %>" TabIndex="101" OnCheckedChanged="IsCompressible_Changed" />
.
.
.
However, when it renders, there is an extra RadAjaxPanel that is being created, as seen below. This panel does not get generated in any of the other pages with a similar process. Due to the extra panel, I receive a JS error of "Uncaught TypeError: Cannot read property 'id' of null" in "Telerik.Web.UI.WebResource.axd:3776". It also displays "867|updatePanel|ctl00_ctl00_mainHolder_FluidTypeListPanel|" on the page.
<
div
id
=
"mainHolder_updatePanel"
>
<!-- this is the main UpdatePanel -->
<
span
class
=
"stepTitle"
>Set Fluid Properties</
span
>
<
div
class
=
"calculateInnerDiv"
>
<
div
class
=
"RadAjaxPanel"
id
=
"ctl00_ctl00_mainHolder_FluidTypeListPanel"
>
<!-- this should not exist and throws errors like I have nested update panels -->
<
table
id
=
"mainHolder_FluidTypeList"
>
<
tr
>...</
tr
>
</
table
>
</
div
>
<
input
id
=
"mainHolder_IsCompressibleCheckBox"
type
=
"checkbox"
name
=
"ctl00$mainHolder$IsCompressibleCheckBox"
onclick
=
"javascript:setTimeout('__doPostBack(\'ctl00$mainHolder$IsCompressibleCheckBox\',\'\')', 0)"
tabindex
=
"101"
/>
.
For my codebehind, I run a case statement that hides/displays certain fields based on the selection, and then it calls updatePanel.Update(). Any suggestions are absolutely welcome as I'm at my wit's end on this.
Thank you for your time.
I have one radgrid in user control.
I am loading that user control using RadMultiPage in my .aspx page.
If I load that user control in default pageview then Pagination dropdown of radgrid working fine but if I load that same user control in other pageview of RadMultiPage using Ajax Request of RadAjaxManager then pagination dropdown not working. It is not performing any action like hover, focused, click etc.
Other pagination controls are working fine. After refreshing grid or after any post back dropdown working fine.
Code of My .aspx file
<
radA:RadAjaxManager
ID
=
"radAjaxManager"
runat
=
"server"
AjaxUrl
=
"OrderMain.aspx"
OnAjaxRequest
=
"radAjaxManager_AjaxRequest"
ClientEvents-OnRequestStart
=
"reqStart()"
ClientEvents-OnResponseEnd
=
"resEnd()"
>
</
radA:RadAjaxManager
>
<
div
id
=
"divReportsTreeViewContainer"
class
=
"reportsTreeViewContainer"
>
<
radT:RadTreeView
ID
=
"radTreeViewReports"
runat
=
"server"
Skin
=
"Arrows/3DClassic"
ImagesBaseDir
=
"Images/"
ExpandDelay
=
"1"
OnNodeExpand
=
"radTreeViewReports_NodeExpand"
ShowLineImages
=
"false"
AutoPostBack
=
"False"
>
</
radT:RadTreeView
>
</
div
>
<
radTS:RadMultiPage
ID
=
"radMultiPageOrders"
runat
=
"server"
RenderSelectedPageOnly
=
"true"
SelectedIndex
=
"0"
>
<
radTS:PageView
ID
=
"defaultPage"
runat
=
"server"
>
<
MyOwnControl:MyControl
runat
=
"server"
id
=
"mycontrol1"
/>
</
radTS:PageView
>
<
radTS:PageView
ID
=
"FirstPage"
runat
=
"server"
>
<
MyOwnControl:MyControl
runat
=
"server"
id
=
"mycontrol1"
/>
</
radTS:PageView
>
</
radTS:RadMultiPage
>
Code of .aspx.cs
protected
void
radAjaxManager_AjaxRequest(
object
sender, Telerik.WebControls.AjaxRequestEventArgs e)
{
switch
(e.Argument)
{
case
1:
{
radMultiPageOrders.SelectedIndex = 0;
break
;
}
case
2:
{
radMultiPageOrders.SelectedIndex = 1;
break
;
}
default
:
{
radMultiPageOrders.SelectedIndex = 0;
break
;
}
}
}
My RadGrid declaration
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
ShowFooter
=
"true"
Skin
=
"Telerik"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
ShowStatusBar
=
"true"
SelectedItemStyle-BackColor
=
"Green"
OnPreRender
=
"RadGrid1_PreRender"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
OnUpdateCommand
=
"RadGrid1_UpdateCommand1"
OnInsertCommand
=
"RadGrid1_InsertCommand"
OnDeleteCommand
=
"RadGrid1_DeleteCommand"
OnItemDataBound
=
"RadGrid1_ItemDataBound1"
OnItemCommand
=
"RadGrid1_ItemCommand"
PageSize
=
"5"
CellSpacing
=
"0"
></
telerik:RadGrid
>
I have a user control on a page which is a RadRotator control. The page is ajaxified. There is a combobox which causes the usercontrol to refresh.
With Ajax disabled, it works great.
With Ajax enabled, when the usercontrol updates itself, it is fine. When the combobox updates the usercontrol, all of the items in the usercontrol are listed vertically.
Page:
RadAjaxManager1.AjaxSettings.AddAjaxSetting(clientcbo, this.QuickReportsFormDiv, null, UpdatePanelRenderMode.Inline);
UserControl:
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
</telerik:RadAjaxManagerProxy>
<telerik:RadScriptBlock ID="RadScriptBlockqrtr" runat="server">
<script type="text/javascript">
function ShowError(sender, args) {
alert('Quick Report Request Failed with unknown error.');
}
</script>
</telerik:RadScriptBlock>
<asp:Panel id="QuickReportsFormDiv" runat="server" style="min-height: 66px; margin-bottom: 5px; white-space: normal!important">
<telerik:RadRotator ID="QuickReportsRadRotator" runat="server"
RenderMode="Lightweight" Height="100px" Width="100%"
RotatorType="Buttons" EnableDragScrolling="false" WrapFrames="false"
ScrollDirection="Left,Right" ScrollDuration="1"
AppendDataBoundItems="false"
OnItemClick="QuickReportsRadRotator_ItemClick"
>
<ItemTemplate>
<telerik:RadBinaryImage ID="QuickReportsControl" runat="server"
CssClass="QRThumbnails"
AlternateText='<%# Eval("FileUploadID") %>' ToolTip='<%# Eval("FileTitle") %>'
DataValue='<%# Eval("ThumbnailBinaryData") %>'
/>
</ItemTemplate>
</telerik:RadRotator>
</asp:Panel>
<
div
style
=
"margin-right: 20px;"
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
Width
=
"100%"
DataSourceID
=
"SqlDataSource1"
AllowAutomaticDeletes
=
"true"
AllowAutomaticInserts
=
"true"
AllowAutomaticUpdates
=
"true"
AutoGenerateColumns
=
"false"
AllowMultiRowSelection
=
"true"
>
<
MasterTableView
PageSize
=
"10"
AllowPaging
=
"True"
Width
=
"100%"
DataKeyNames
=
"ContinentID"
DataSourceID
=
"SqlDataSource1"
EditMode
=
"InPlace"
>
<
Columns
>
<
telerik:GridClientSelectColumn
></
telerik:GridClientSelectColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"ContinentID"
DataField
=
"ContinentID"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"ContinentName"
DataField
=
"ContinentName"
></
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnRowContextMenu
=
"RowContextMenu"
></
ClientEvents
>
<
Selecting
AllowRowSelect
=
"true"
></
Selecting
>
</
ClientSettings
>
</
telerik:RadGrid
>
</
div
>
RadGrid1.ExportSettings.ExportOnlyData =
true
;
RadGrid1.ExportSettings.IgnorePaging =
true
;
RadGrid1.ExportSettings.OpenInNewWindow =
true
;
RadGrid1.MasterTableView.ExportToExcel();
foreach
(GridDataItem item
in
RadGrid1.Items)
{
if
(item.Selected ==
false
)
{
item.Visible =
false
;
}
}
RadGrid1.ExportSettings.ExportOnlyData =
true
;
RadGrid1.ExportSettings.IgnorePaging =
true
;
RadGrid1.ExportSettings.OpenInNewWindow =
true
;
RadGrid1.MasterTableView.ExportToExcel();
Hi,
I was trying hard to use Gantt with Oracle Database over the Oracle Managed Connection, with Visual Studio 2013/ASP.NET 4.5. Well I had a few problems.
Then I returned to the blackboard and Worked on your Example. Then I hit an end.
So when you want resource assignments to be made, You cant. The events do not trigger. Am I missing something?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Temp_GanttBinding_List.aspx.cs" Inherits="GanttDBConnection.Temp_GanttBinding_List" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI.Gantt" tagprefix="cc1" %>
<!DOCTYPE html>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
runat
=
"server"
></
telerik:RadScriptManager
>
<
div
>
<
telerik:RadGantt
runat
=
"server"
ID
=
"RadGantt1"
Culture
=
"tr-TR"
LocalizationPath
=
"LocalResources"
SnapToGrid
=
"false"
AutoGenerateColumns
=
"false"
SelectedView
=
"MonthView"
EnableResources
=
"true"
OnDependencyInsert
=
"RadGantt1_DependencyInsert"
OnDependencyDelete
=
"RadGantt1_DependencyDelete"
OnTaskDelete
=
"RadGantt1_TaskDelete"
OnTaskUpdate
=
"RadGantt1_TaskUpdate"
OnTaskInsert
=
"RadGantt1_TaskInsert"
OnAssignmentDelete
=
"RadGantt1_AssignmentDelete"
OnAssignmentInsert
=
"RadGantt1_AssignmentInsert"
OnAssignmentUpdate
=
"RadGantt1_AssignmentUpdate"
>
<
Columns
>
<
telerik:GanttBoundColumn
DataField
=
"ID"
HeaderText
=
"#"
Width
=
"40px"
></
telerik:GanttBoundColumn
>
<
telerik:GanttBoundColumn
DataField
=
"Title"
HeaderText
=
"Başlık"
DataType
=
"String"
></
telerik:GanttBoundColumn
>
<
telerik:GanttResourceColumn
HeaderText
=
"Atanmış Kaynak"
></
telerik:GanttResourceColumn
>
</
Columns
>
<
DataBindings
>
<
TasksDataBindings
IdField
=
"ID"
TitleField
=
"Title"
StartField
=
"Start"
EndField
=
"End"
PercentCompleteField
=
"PercentComplete"
OrderIdField
=
"OrderID"
SummaryField
=
"Summary"
ParentIdField
=
"ParentID"
/>
<
DependenciesDataBindings
IdField
=
"ID"
PredecessorIdField
=
"PredecessorID"
SuccessorIdField
=
"SuccessorID"
TypeField
=
"Type"
/>
<
ResourcesDataBindings
IdField
=
"ID"
TextField
=
"Name"
ColorField
=
"Color"
/>
<
AssignmentsDataBindings
IdField
=
"ID"
TaskIdField
=
"TaskID"
ResourceIdField
=
"ResourceID"
UnitsField
=
"Units"
/>
</
DataBindings
>
</
telerik:RadGantt
>
</
div
>
</
form
>
</
body
>
</
html
>
Then I kind of added some to simulate my own project.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using Telerik.Web.UI.Gantt;
using System.Data;
namespace GanttDBConnection
{
public partial class Temp_GanttBinding_List : System.Web.UI.Page
{
private const string TasksKey = "Telerik.GanttSample.Tasks";
private const string DependenciesKey = "Telerik.GanttSample.Dependencies";
private const string AssignmentsKey = "Telerik.GanttSample.Assignments";
private const string ResourcesKey = "Telerik.GanttSample.Resources";
private List<
Task
> Tasks
{
get
{
List<
Task
> sessionTasks = Session[TasksKey] as List<
Task
>;
if (sessionTasks == null)
{
sessionTasks = new List<
Task
>();
sessionTasks.Add(new Task
{
ID = 1,
Title = "Yeni Görev",
Start = new DateTime(2015, 8, 5, 12, 40, 0),
End = new DateTime(2015, 8, 5, 12, 40, 0),
OrderID = 0
});
Session[TasksKey] = sessionTasks;
}
return sessionTasks;
}
}
public List<
Dependency
> Dependencies
{
get
{
List<
Dependency
> sessionDependencies = Session[DependenciesKey] as List<
Dependency
>;
if (sessionDependencies == null)
{
sessionDependencies = new List<
Dependency
>();
Session[DependenciesKey] = sessionDependencies;
}
return sessionDependencies;
}
}
public List<
CustomGanttResource
> CustomGanttResources
{
get
{
List<
CustomGanttResource
> sessionResources = Session[ResourcesKey] as List<
CustomGanttResource
>;
if (sessionResources == null)
{
sessionResources = new List<
CustomGanttResource
>();
sessionResources.Add(new CustomGanttResource
{
ID = 1,
Name = "Mutlu",
Color = "#ff0000"
});
Session[ResourcesKey] = sessionResources;
}
return sessionResources;
}
}
public List<
Assignment
> Assignments
{
get
{
List<
Assignment
> sessionAssignments = Session[AssignmentsKey] as List<
Assignment
>;
if (sessionAssignments == null)
{
sessionAssignments = new List<
Assignment
>();
Session[DependenciesKey] = sessionAssignments;
}
return sessionAssignments;
}
}
protected void Page_Load(object sender, EventArgs e)
{
RadGantt1.DataSource = Tasks;
RadGantt1.DependenciesDataSource = Dependencies;
RadGantt1.ResourcesDataSource = CustomGanttResources;
RadGantt1.AssignmentsDataSource = Assignments;
}
protected void RadGantt1_TaskDelete(object sender, TaskEventArgs e)
{
foreach (Task task in e.Tasks)
{
var original = GetByID((int)task.ID);
Tasks.Remove(original);
}
}
protected void RadGantt1_TaskUpdate(object sender, TaskEventArgs e)
{
foreach (Task task in e.Tasks)
{
var original = GetByID((int)task.ID);
original.Start = task.Start;
original.End = task.End;
original.Title = task.Title;
original.PercentComplete = task.PercentComplete;
original.OrderID = task.OrderID;
original.Summary = task.Summary;
original.ParentID = task.ParentID;
}
}
protected void RadGantt1_TaskInsert(object sender, TaskEventArgs e)
{
foreach (Task task in e.Tasks)
{
task.ID = NextID();
Tasks.Add(task);
}
}
private Task GetByID(int id)
{
return Tasks.Find((task) => (int)task.ID == id);
}
private int NextID()
{
var nextID = 0;
foreach (ITask task in Tasks)
{
if ((int)task.ID > 0)
{
nextID = (int)task.ID;
}
}
return ++nextID;
}
protected void RadGantt1_DependencyInsert(object sender, DependencyEventArgs e)
{
foreach (Dependency dependency in e.Dependencies)
{
dependency.ID = NextDependencyID();
Dependencies.Add(dependency);
}
}
protected void RadGantt1_DependencyDelete(object sender, DependencyEventArgs e)
{
foreach (Dependency dependency in e.Dependencies)
{
var original = GetDependencyByID((int)dependency.ID);
Dependencies.Remove(original);
}
}
private Dependency GetDependencyByID(int id)
{
return Dependencies.Find((dependency) => (int)dependency.ID == id);
}
private int NextDependencyID()
{
var nextID = 0;
foreach (IDependency dependency in Dependencies)
{
if ((int)dependency.ID > 0)
{
nextID = (int)dependency.ID;
}
}
return ++nextID;
}
protected void RadGantt1_AssignmentDelete(object sender, AssignmentEventArgs e)
{
//Just to see if this event triggers.
int a = 5;
}
protected void RadGantt1_AssignmentInsert(object sender, AssignmentEventArgs e)
{
//Just to see if this event triggers.
int a = 5;
}
protected void RadGantt1_AssignmentUpdate(object sender, AssignmentEventArgs e)
{
//Just to see if this event triggers.
int a = 5;
}
public class CustomGanttResource
{
public void CustomGanttResources(int ID, string Name, string Color)
{
_ID = ID;
_Name = Name;
_Color = Color;
}
private int _ID;
public int ID
{
get { return _ID; }
set { _ID = value; }
}
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Color;
public string Color
{
get { return _Color; }
set { _Color = value; }
}
}
}
}
Thanks in Advance.
Mutlu