Hi,
Could anyone please tell me - How to get the following dynamically in code behind (i was able to set values for these ...)
1. RadGrid's each row height (Row height of each row in MasterTableView)
2. Height of MasterTableView .
Why I need this:
One column in my radgrid is description. It can grow to huge size. I cant parse and give tool tip as I need to print and export(it exports/prints only the data on the grid)
So I gave scrolling to grid even though pagination is there .
Since the description can grow and shrink the following code inside DataBound Event is also not working
if (gridItems < 4)
{
grid.ClientSettings.Scrolling.ScrollHeight = Unit.Pixel(gridItems * 28);
}
So I tried instead of hard coded "28", the following
if
(grid.MasterTableView.Height.Value >= 150)
{
grid.ClientSettings.Scrolling.ScrollHeight = Unit.Pixel(150);
}
else
{
grid.ClientSettings.Scrolling.ScrollHeight = grid.MasterTableView.Height;
}
But grid.MasterTableView.Height is always 0.0 :(
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="TemplateGoogleSuggestPage.aspx.vb" Inherits="Template_Web_TemplateGoogleSuggestPage" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"ContentPlaceHolderHeader"
Runat
=
"Server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"ContentPlaceHolder1"
Runat
=
"Server"
>
<
div
id
=
"main-content"
>
<
div
class
=
"headName"
>
TemplateGoogleSuggestPage
</
div
>
<
div
class
=
"divGrid"
runat
=
"server"
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rg_Task"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
LoadingPanelID
=
"RadAjaxLoadingPanel1"
ControlID
=
"rg_Task"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
Runat
=
"server"
Skin
=
"Telerik"
>
</
telerik:RadAjaxLoadingPanel
>
<
telerik:RadGrid
ID
=
"rg_Task"
runat
=
"server"
AutoGenerateColumns
=
"False"
>
</
telerik:RadGrid
>
<
asp:Button
ID
=
"bt_Confirm"
runat
=
"server"
Text
=
"ตกลง"
/>
<
asp:Button
ID
=
"bt_Cancel"
runat
=
"server"
Text
=
"ยกเลิก"
/>
</
div
>
</
div
>
</
asp:Content
>
Imports
Telerik.Web.UI
Imports
TimesheetConnector.Command.TEST
Imports
TimesheetEntities.Entities.TS
Imports
System.Data
Imports
System.Web.Services
Partial
Class
Template_Web_TemplateGoogleSuggestPage
Inherits
System.Web.UI.Page
Dim
DbConn
As
TEST001
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
Try
If
Not
IsPostBack
Then
DbConn =
New
TEST001
ViewState(
"Data"
) = DbConn.GetFirstData
ViewState(
"SqlCommand"
) =
New
List(Of
String
)
Me
.rg_Task.MasterTableView.Columns.Clear()
'RadGrid Properties
With
rg_Task
'General properties
.AutoGenerateColumns =
False
'Paging style
.AllowPaging =
True
.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric
.MasterTableView.PageSize = 10
.PagerStyle.AlwaysVisible =
True
.Width = Unit.Pixel(560)
.AllowFilteringByColumn =
True
.MasterTableView.EditMode = GridEditMode.InPlace
.MasterTableView.DataKeyNames = {
"taskID"
}
.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Bottom
.MasterTableView.CommandItemSettings.AddNewRecordText =
"เพิ่ม"
.MasterTableView.CommandItemSettings.ShowRefreshButton =
False
'Drag/Drop
.ClientSettings.AllowDragToGroup =
False
End
With
Dim
column1
As
New
MyCustomFilteringColumnVB(
DirectCast
(ViewState(
"Data"
), Data.DataTable))
rg_Task.MasterTableView.Columns.Add(column1)
column1.ItemStyle.Width = Unit.Percentage(1)
column1.DataField =
"TaskID"
column1.HeaderText =
"รหัสงาน"
column1.Visible =
False
Dim
column2
As
New
MyCustomFilteringColumnVB(
DirectCast
(ViewState(
"Data"
), Data.DataTable))
rg_Task.MasterTableView.Columns.Add(column2)
column2.ItemStyle.Width = Unit.Percentage(5)
column2.DataField =
"TaskName"
column2.HeaderText =
"ชื่องาน"
Dim
column3
As
New
GridEditCommandColumn
rg_Task.MasterTableView.Columns.Add(column3)
column3.ItemStyle.Width = Unit.Percentage(1)
Dim
column4
As
New
GridButtonColumn
rg_Task.MasterTableView.Columns.Add(column4)
column4.ItemStyle.Width = Unit.Percentage(1)
column4.CommandName =
"Delete"
column4.ConfirmText =
"คุณต้องการลบข้อมูลชุดนี้หรือไม่?"
column4.ConfirmTitle =
"คำเตือน!"
column4.Text =
"ลบ"
column4.UniqueName =
"DeleteColumn"
Else
rg_Task.MasterTableView.Columns(0).ItemStyle.Width = Unit.Percentage(1)
rg_Task.MasterTableView.Columns(1).ItemStyle.Width = Unit.Percentage(5)
End
If
'Add ajax trigger
'Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(rg_Task, rg_Task)
Me
.RadAjaxLoadingPanel1.Transparency = 30
rg_Task.DataSource =
DirectCast
(ViewState(
"Data"
), Data.DataTable)
Catch
ex
As
Exception
End
Try
bt_Confirm.OnClientClick() =
"javascript:confirm('คุณต้องการ "
"บันทึก"
" ข้อมูลหรือไม่?')"
End
Sub
Protected
Sub
rg_Task_ColumnCreating(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridColumnCreatingEventArgs)
Handles
rg_Task.ColumnCreating
If
e.ColumnType =
GetType
(MyCustomFilteringColumnVB).Name
Then
e.Column =
New
MyCustomFilteringColumnVB(
DirectCast
(ViewState(
"Data"
), DataTable))
End
If
End
Sub
Protected
Sub
rg_Task_ItemCommand(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridCommandEventArgs)
Handles
rg_Task.ItemCommand
If
(e.CommandName = RadGrid.InitInsertCommandName)
Then
rg_Task.MasterTableView.ClearEditItems()
End
If
If
e.CommandName = RadGrid.EditCommandName
Then
e.Item.OwnerTableView.IsItemInserted =
False
End
If
If
(e.CommandName = RadGrid.FilterCommandName)
Then
For
Each
column
As
GridColumn
In
e.Item.OwnerTableView.Columns
column.CurrentFilterValue =
String
.Empty
column.CurrentFilterFunction = GridKnownFunction.NoFilter
Next
End
If
End
Sub
Protected
Sub
rg_Task_UpdateCommand(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridCommandEventArgs)
Handles
rg_Task.UpdateCommand
Dim
editedItem
As
GridEditableItem = TryCast(e.Item, GridEditableItem)
Dim
TaskID
As
String
= editedItem.OwnerTableView.DataKeyValues(editedItem.ItemIndex)(
"taskID"
).ToString
Dim
TaskName
As
String
= (TryCast(editedItem(
"TaskName"
).Controls(0), TextBox)).Text
'เก็บ data ที่ยังไม่ confirm ลงใน DataTable
Dim
dt
As
DataTable = ViewState(
"Data"
)
dt.Rows(editedItem.ItemIndex).Item(
"TaskName"
) = TaskName
ViewState(
"Data"
) = dt
rg_Task.DataSource = ViewState(
"Data"
)
rg_Task.DataBind()
'เก็บ sql command ลงใน List Of String
DbConn =
New
TEST001
Dim
lstSQL
As
List(Of
String
) = TryCast(ViewState(
"SqlCommand"
), List(Of
String
))
lstSQL.Add(DbConn.SqlCmd_UpdateTask(TaskID, TaskName))
ViewState(
"SqlCommand"
) = lstSQL
End
Sub
Protected
Sub
rg_Task_InsertCommand(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridCommandEventArgs)
Handles
rg_Task.InsertCommand
Dim
insertedItem
As
GridEditableItem =
DirectCast
(e.Item, GridEditableItem)
Dim
TaskName
As
String
= (TryCast(insertedItem(
"TaskName"
).Controls(0), TextBox)).Text
'เก็บ data ที่ยังไม่ confirm ลงใน DataTable
Dim
dt
As
DataTable = ViewState(
"Data"
)
Dim
lastTaskID
As
Integer
= GetLastTaskID(dt)
Dim
dr
As
DataRow = dt.NewRow
dr.Item(
"TaskName"
) = TaskName
dr.Item(
"TaskID"
) = lastTaskID
dt.Rows.Add(dr)
ViewState(
"Data"
) = dt
rg_Task.DataSource = ViewState(
"Data"
)
rg_Task.DataBind()
'เก็บ sql command ลงใน List Of String
DbConn =
New
TEST001
Dim
lstSQL
As
List(Of
String
) = TryCast(ViewState(
"SqlCommand"
), List(Of
String
))
lstSQL.Add(DbConn.SqlCmd_InsertTask(lastTaskID, TaskName))
ViewState(
"SqlCommand"
) = lstSQL
End
Sub
Protected
Sub
rg_Task_DeleteCommand(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridCommandEventArgs)
Handles
rg_Task.DeleteCommand
Dim
item
As
GridDataItem =
DirectCast
(e.Item, GridDataItem)
Dim
TaskID
As
String
= item.OwnerTableView.DataKeyValues(item.ItemIndex)(
"taskID"
).ToString
'Delete data ที่ยังไม่ confirm ลงใน DataTable
Dim
dt
As
DataTable = ViewState(
"Data"
)
dt.Rows.RemoveAt(e.Item.DataSetIndex)
ViewState(
"Data"
) = dt
rg_Task.DataSource = ViewState(
"Data"
)
rg_Task.DataBind()
'เก็บ sql command ลงใน List Of String
DbConn =
New
TEST001
Dim
lstSQL
As
List(Of
String
) = TryCast(ViewState(
"SqlCommand"
), List(Of
String
))
lstSQL.Add(DbConn.SqlCmd_DeleteTask(TaskID))
ViewState(
"SqlCommand"
) = lstSQL
End
Sub
Protected
Sub
bt_Confirm_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
bt_Confirm.Click
DbConn =
New
TEST001
DbConn.CustomExcecuteNonQuery(TryCast(ViewState(
"SqlCommand"
), List(Of
String
)))
ViewState(
"Data"
) = DbConn.GetTask
ViewState(
"SqlCommand"
) =
New
List(Of
String
)
rg_Task.DataSource = ViewState(
"Data"
)
rg_Task.DataBind()
End
Sub
Protected
Sub
bt_Cancel_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
bt_Cancel.Click
DbConn =
New
TEST001
ViewState(
"Data"
) = DbConn.GetTask
ViewState(
"SqlCommand"
) =
New
List(Of
String
)
rg_Task.DataSource = ViewState(
"Data"
)
rg_Task.DataBind()
End
Sub
Protected
Function
GetLastTaskID(
ByVal
dataTable
As
DataTable)
As
Integer
Dim
lastID
As
Integer
= -1
If
dataTable.Rows.Count <> 0
Then
For
Each
dr
As
DataRow
In
dataTable.Rows
If
lastID <
CInt
(dr.Item(
"TaskID"
))
Then
lastID =
CInt
(dr.Item(
"TaskID"
))
End
If
Next
End
If
Return
lastID + 1
End
Function
End
Class
Imports
Microsoft.VisualBasic
Imports
Telerik.Web.UI
Imports
System.Data
Public
Class
MyCustomFilteringColumnVB
Inherits
GridBoundColumn
Dim
dtSource
As
DataTable
Dim
sName
As
String
Sub
New
(
ByVal
dataTable
As
DataTable)
' TODO: Complete member initialization
dtSource = dataTable
End
Sub
Protected
Overrides
Sub
SetupFilterControls(
ByVal
cell
As
TableCell)
MyBase
.SetupFilterControls(cell)
cell.Controls.RemoveAt(0)
Dim
rcbb_GoogleLikeFilter
As
New
RadComboBox()
'Set combobox properties
With
rcbb_GoogleLikeFilter
.ID =
Me
.UniqueName
.ShowToggleImage =
False
'Default = False
.Skin =
"Office2007"
.EnableLoadOnDemand =
True
'Default = True
.AutoPostBack =
True
.MarkFirstMatch =
True
'Default = True
.Width = Unit.Pixel(150)
.EmptyMessage =
"Search items"
.MaxHeight = Unit.Pixel(150)
End
With
'Event Handling
AddHandler
rcbb_GoogleLikeFilter.ItemsRequested,
AddressOf
Me
.list_ItemRequested
AddHandler
rcbb_GoogleLikeFilter.SelectedIndexChanged,
AddressOf
Me
.list_SelectedIndexChanged
'Add ComboBox Filter
cell.Controls.AddAt(0, rcbb_GoogleLikeFilter)
cell.Controls.RemoveAt(1)
End
Sub
Protected
Overrides
Sub
SetCurrentFilterValueToControl(
ByVal
CustomCell
As
TableCell)
MyBase
.SetCurrentFilterValueToControl(CustomCell)
Dim
rcbb_GoogleLikeFilter
As
RadComboBox =
DirectCast
(CustomCell.Controls(0), RadComboBox)
If
(
Me
.CurrentFilterValue <>
String
.Empty)
Then
rcbb_GoogleLikeFilter.Text =
Me
.CurrentFilterValue
End
If
End
Sub
Protected
Overrides
Function
GetCurrentFilterValueFromControl(
ByVal
CustomCell
As
TableCell)
As
String
Dim
rcbb_GoogleLikeFilter
As
RadComboBox =
DirectCast
(CustomCell.Controls(0), RadComboBox)
Return
rcbb_GoogleLikeFilter.Text
End
Function
#Region "--- Event Handling ---"
Private
Sub
list_ItemRequested(
ByVal
o
As
Object
,
ByVal
e
As
RadComboBoxItemsRequestedEventArgs)
DirectCast
(o, RadComboBox).DataTextField =
Me
.DataField
DirectCast
(o, RadComboBox).DataValueField =
Me
.DataField
DirectCast
(o, RadComboBox).DataSource = dtSource
DirectCast
(o, RadComboBox).DataBind()
End
Sub
Private
Sub
list_SelectedIndexChanged(
ByVal
o
As
Object
,
ByVal
e
As
RadComboBoxSelectedIndexChangedEventArgs)
Dim
giFilterItem
As
GridFilteringItem =
DirectCast
(
DirectCast
(o, RadComboBox).NamingContainer, GridFilteringItem)
If
(
Me
.UniqueName =
"Index"
)
Then
giFilterItem.FireCommandEvent(
"Filter"
,
New
Pair(
"EqualTo"
,
Me
.UniqueName))
End
If
giFilterItem.FireCommandEvent(
"Filter"
,
New
Pair(
"Contains"
,
Me
.UniqueName))
End
Sub
#End Region
End
Class
protected
void
RadGrid1_SelectedIndexChanged(
object
sender, EventArgs e)
{
MakeChart(
int
.Parse(RadGrid1.SelectedIndexes[RadGrid1.SelectedIndexes.Count-1]));
}
private
void
MakeChart(
int
selind)
{
DataTable chartdt =
new
DataTable();
//Make Chart DataSource Here..
RadChart1.DataSource = chartdt;
RadChart1.DataBind();
}
Hello,
We are experiencing strange alignment problem in one (numeric) rad grid column. Please see attached picture.
Given HorizontalAlign="Right" and AllowScroll="True", the alignment changes after PageSize rows.
How can we work around this?
<
telerik:RadGrid
id
=
"RadGridTreb"
runat
=
"server"
AutoGenerateColumns
=
"False"
AllowMultiRowSelection
=
"True"
AllowSorting
=
"True"
GridLines
=
"None"
Culture
=
"ru-RU"
Width
=
"100%"
EnableEmbeddedSkins
=
"False"
OnPreRender
=
"RadGrid_PreRender"
Height
=
"300px"
EnableViewState
=
"False"
OnInit
=
"RadGridTreb_Init"
>
<
ExportSettings
FileName
=
"PlatCalendar"
> </
ExportSettings
>
<
ClientSettings
AllowColumnHide
=
"True"
AllowRowHide
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
></
Selecting
>
<
DataBinding
FilterParameterType
=
"Linq"
Location
=
"FinanceService.asmx"
SelectMethod
=
"GetRowsTableLinq"
SortParameterType
=
"Linq"
>
</
DataBinding
>
<
Scrolling
AllowScroll
=
"True"
SaveScrollPosition
=
"True"
/>
<
Columns
>
* * *
<
telerik:GridCalculatedColumn
DataFields
=
"CRE_AMOUNT_EFFECT"
HeaderText
=
"Сумма"
DataType
=
"System.Decimal"
UniqueName
=
"CRE_AMOUNT_EFFECT"
Expression
=
"{0}"
>
<
HeaderStyle
Width
=
"80px"
HorizontalAlign
=
"Center"
></
HeaderStyle
>
<
ItemStyle
Width
=
"80px"
HorizontalAlign
=
"Right"
></
ItemStyle
>
</
telerik:GridCalculatedColumn
>
* * *
Best regards,
Maxim