<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.PanelBar_Default" %>
<%@ Register Src="~/PanelBar/WebUserControl.ascx" TagName="ucpb" TagPrefix="usercpb" %>
<head id="Head1" runat="server">
<title></title>
<style type="text/css">
</style>
<script type="text/javascript">
</script>
</head>
<body>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="ScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Outlook">
</telerik:RadAjaxLoadingPanel>
<telerik:RadScriptBlock ID="ScriptBlock1" runat="server">
<script type="text/javascript">
function SelectFirstOnGridCreated(sender, args) {
if (sender.get_masterTableView().get_dataItems().length > 0) {
sender.set_activeRow(sender.get_masterTableView().get_dataItems()[0].get_element());
sender.get_masterTableView().get_dataItems()[0].set_selected(true);
}
}
</script>
</telerik:RadScriptBlock>
<telerik:RadAjaxPanel runat="server" ID="rapHourControl" LoadingPanelID="RadAjaxLoadingPanel1">
<asp:Panel ID="pnlHourControl" runat="server" Width="100%" ScrollBars="auto">
<telerik:RadGrid ID="rgHCTotal" runat="server" PageSize="7" AllowPaging="true" OnNeedDataSource="rgHCTotal_NeedDataSource"
OnItemCreated="rgHCTotal_ItemCreated" OnItemCommand="rgHCTotal_ItemCommand">
<MasterTableView AutoGenerateColumns="False" UseAllDataFields="True" DataKeyNames="PersonID,Date"
ClientDataKeyNames="PersonID,Date">
<Columns>
<telerik:GridButtonColumn ButtonType="ImageButton" ImageUrl="~/Images/RadGrid/16pxSearch.png"
CommandName="View" UniqueName="ViewColumn" Text="View">
<HeaderStyle CssClass="rgHeader ButtonColumnHeader"></HeaderStyle>
<ItemStyle CssClass="ButtonColumn"></ItemStyle>
</telerik:GridButtonColumn>
<telerik:GridTemplateColumn UniqueName="IsAccord" HeaderText="" Visible="true" DataField="IsAccord">
<ItemTemplate>
<asp:CheckBox ID="cbIsAccord" runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "IsAccord") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="Date" HeaderText="Date" Visible="true" DataField="Date">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Date", "{0:d}")%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="StartTime" HeaderText="Start time" ItemStyle-HorizontalAlign="Right"
HeaderStyle-HorizontalAlign="Right" DataField="StartTime">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "StartTime", "{0:t}")%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="EndTime" HeaderText="End time" ItemStyle-HorizontalAlign="Right"
HeaderStyle-HorizontalAlign="Right" DataField="EndTime">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "EndTime", "{0:t}")%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="Duration" HeaderText="Duration" ItemStyle-HorizontalAlign="Right"
HeaderStyle-HorizontalAlign="Right" DataField="Duration">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Duration", "{0:T}")%>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings AllowKeyboardNavigation="true">
<Selecting AllowRowSelect="true" />
<KeyboardNavigationSettings EnableKeyboardShortcuts="true" AllowSubmitOnEnter="false" />
<ClientEvents OnGridCreated="SelectFirstOnGridCreated" />
</ClientSettings>
</telerik:RadGrid>
</asp:Panel>
</telerik:RadAjaxPanel>
</form>
</body>
</html>
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 System.Data;
namespace WebApplication1
{
public partial class PanelBar_Default : System.Web.UI.Page
{
private const string sRGTotalCode = "TMS_HourControl_0001_RG01";
private const string sRGDetailCode = "TMS_HourControl_0001_RG02";
private const string sTotKeyField = "PersonID";
private const string sTotEntity = "Hour Control Totals";
private const string sTotViewState = "LoadGridSettingsHCTotal";
private const string sDetKeyField = "TripID";
private const string sDetEntity = "Hour Control Details";
private const string sDetViewState = "LoadGridSettingsHCDetail";
protected override void OnLoad(EventArgs e)
{
BuildColumns();
base.OnLoad(e);
}
protected void Page_Load(object sender, EventArgs e)
{
GetSettings();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
private class ColumnTemplate : ITemplate
{
string _colName;
public ColumnTemplate(string sColName)
{
_colName = sColName;
}
public void InstantiateIn(Control container)
{
Label _value = new Label();
_value.Attributes.Add("DataField", _colName);
_value.DataBinding += new EventHandler(_value_DataBinding);
container.Controls.Add(_value);
}
void _value_DataBinding(object sender, EventArgs e)
{
Label lblValue = (Label)sender;
GridDataItem container = (GridDataItem)lblValue.NamingContainer;
TimeSpan tsValue = (TimeSpan)((DataRowView)container.DataItem)[lblValue.Attributes["DataField"].ToString()];
if (tsValue.Ticks > 0)
lblValue.Text = String.Format("{0}:{1:" + @"mm\:ss" + "}", ((tsValue.Days * 24) + tsValue.Hours), tsValue);
else
lblValue.Text = "--:--:--";
}
}
private void BuildColumns()
{
int iNumCol = 2;
string[] sCol = new string[] { "Load", "Unload" };
for (int iCol = 0; iCol < iNumCol; iCol++)
{
GridColumn gcHC = rgHCTotal.MasterTableView.Columns.FindByUniqueNameSafe(sCol[iCol]);
GridTemplateColumn gtcHC = new GridTemplateColumn();
if (gcHC != null)
{
gtcHC = (GridTemplateColumn)gcHC;
gtcHC.ItemTemplate = new ColumnTemplate(sCol[iCol]);
}
else
{
gtcHC.UniqueName = sCol[iCol];
rgHCTotal.MasterTableView.Columns.Add(gtcHC);
gtcHC.DataField = sCol[iCol];
gtcHC.HeaderText = sCol[iCol];
gtcHC.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
gtcHC.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
gtcHC.ItemTemplate = new ColumnTemplate(sCol[iCol]);
}
}
}
private void GetSettings()
{
ApplyGridSettings();
}
private void ApplyGridSettings()
{
if (Convert.ToBoolean(ViewState[sTotViewState]) == true || ViewState[sTotViewState] == null)
{
DateTime dtStartDate = new DateTime(2012, 1, 1);
DateTime dtEndDate = new DateTime(2012, 1, 31, 23, 59, 59, 999);
int iSpan = 31;
rgHCTotal.AllowPaging = true;
rgHCTotal.VirtualItemCount = iSpan;
rgHCTotal.MasterTableView.VirtualItemCount = iSpan;
rgHCTotal.ClientSettings.Scrolling.AllowScroll = true;
rgHCTotal.PageSize = iSpan;
rgHCTotal.ClientSettings.Scrolling.EnableVirtualScrollPaging = true;
rgHCTotal.ClientSettings.Scrolling.UseStaticHeaders = true;
rgHCTotal.ClientSettings.Scrolling.SaveScrollPosition = true;
rgHCTotal.ClientSettings.Scrolling.ScrollHeight = Unit.Pixel(265);
rgHCTotal.ClientSettings.KeyboardNavigationSettings.AllowActiveRowCycle = false;
rgHCTotal.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.None;
ViewState[sTotViewState] = false;
}
}
protected void rgHCTotal_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
switch (e.CommandName)
{
case RadGrid.InitInsertCommandName:
e.Canceled = true;
break;
case RadGrid.EditCommandName:
case "View":
{
rgHCTotal.Rebind();
e.Canceled = true;
}
break;
}
}
protected void rgHCTotal_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
rgHCTotal.DataSource = GetHCTotalTable();
}
protected void rgHCTotal_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
}
private DataTable GetHCTotalTable()
{
DataTable dtHCTotal = new DataTable("HCTotal");
if (ViewState["dtHCTotal"] == null)
{
GetHCTotalTableDef(ref dtHCTotal);
CheckHCTotalData(ref dtHCTotal);
ViewState["dtHCTotal"] = dtHCTotal;
}
else
{
DataTable _dt = (DataTable)ViewState["dtHCTotal"];
dtHCTotal.Merge(_dt);
}
return dtHCTotal;
}
private void GetHCTotalTableDef(ref DataTable _table)
{
DataColumn dcolDate = new DataColumn() { ColumnName = "Date", DataType = System.Type.GetType("System.DateTime") };
DataColumn dcolPerson = new DataColumn() { ColumnName = "PersonID", DataType = System.Type.GetType("System.Int32") };
DataColumn[] keys = new DataColumn[2];
keys[0] = dcolPerson;
keys[1] = dcolDate;
_table.Columns.Add();
_table.Columns.Add(dcolPerson);
_table.Columns.Add(dcolDate);
_table.Columns.Add(new DataColumn() { ColumnName = "IsAccord", DataType = System.Type.GetType("System.Boolean") });
_table.Columns.Add(new DataColumn() { ColumnName = "StartTime", DataType = System.Type.GetType("System.DateTime") });
_table.Columns.Add(new DataColumn() { ColumnName = "EndTime", DataType = System.Type.GetType("System.DateTime") });
_table.Columns.Add(new DataColumn() { ColumnName = "Duration", DataType = System.Type.GetType("System.DateTime") });
_table.Columns.Add(new DataColumn() { ColumnName = "IsDummy", DataType = System.Type.GetType("System.Boolean") });
//Add from settings
_table.Columns.Add(new DataColumn() { ColumnName = "Load", DataType = System.Type.GetType("System.TimeSpan") });
_table.Columns.Add(new DataColumn() { ColumnName = "Unload", DataType = System.Type.GetType("System.TimeSpan") });
_table.PrimaryKey = keys;
}
protected void CheckHCTotalData(ref DataTable _table)
{
DateTime dtStartDate = new DateTime(2012, 1, 1);
DateTime dtEndDate = new DateTime(2012, 1, 31, 23, 59, 59, 999);
int iSpan = 31;
for (int iDay = 0; iDay < iSpan; iDay++)
{
DateTime dtDate = dtStartDate.AddDays(iDay);
int iPersonID = 1;
DataRow _exists = _table.Rows.Find(new object[] { iPersonID, dtDate });
if (_exists == null)
{
DataRow _new = _table.NewRow();
_new["PersonID"] = iPersonID;
_new["Date"] = dtDate;
_new["IsAccord"] = false;
_new["IsDummy"] = true;
//Columns added by code
_new["Load"] = 0;
_new["Unload"] = 0;
_table.Rows.Add(_new);
}
}
}
}
}
As you will see in this example, scrolling is working but I can not resize the columns. Ik want both. Scrolling and resizing columns with moving the header outside the viewport when scrolling.
Regards,
Jos