or
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid1"
DataSourceID
=
"DS1"
AutoGenerateColumns
=
"false"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnEditCommand
=
"RadGrid1_EditCommand"
AllowAutomaticUpdates
=
"true"
AllowAutomaticDeletes
=
"true"
>
<
MasterTableView
DataKeyNames
=
"Id"
DataSourceID
=
"DS1"
AllowAutomaticUpdates
=
"true"
AllowAutomaticDeletes
=
"true"
EditMode
=
"EditForms"
>
<
Columns
>
<
telerik:GridBoundColumn
HeaderText
=
"Title"
DataField
=
"Title"
/>
<
telerik:GridEditCommandColumn
ButtonType
=
"LinkButton"
UniqueName
=
"EditCommandColumn"
/>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete?"
ConfirmDialogType
=
"Classic"
ConfirmTitle
=
"Delete"
ButtonType
=
"LinkButton"
CommandName
=
"Delete"
Text
=
"Delete"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
table
>
<
tr
>
<
th
>Search:</
th
>
<
td
colspan
=
"2"
><
telerik:RadAutoCompleteBox
runat
=
"server"
ID
=
"RadAutoCompleteBox1"
DataSourceID
=
"DS2"
Filter
=
"StartsWith"
DataTextField
=
"Text"
DataValueField
=
"Value"
InputType
=
"Token"
Width
=
"100%"
DropDownWidth
=
"300px"
DropDownHeight
=
"200px"
/></
td
>
</
tr
>
<
tr
>
<
td
></
td
>
<
td
>
<
asp:Button
ID
=
"btnUpdate"
Text
=
"Update"
runat
=
"server"
CommandName
=
"Update"
/>
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
<
td
></
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
$(document).ready(
function
() {
$.ajax({
url:
"ResponsePages/Assignees.ashx?userID="
+ $(
"#hfCurrentUserGuid"
).val(),
data:
""
,
type:
"GET"
,
datatype:
'json'
,
success:
function
(data) {
var
list = $(
"#cboAssignees"
);
$.each(data,
function
() {
list.append($(
"<option />"
).val(
this
.Guid).text(
this
.Name));
});
}
});
});
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>
<!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
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
asp:Button
ID
=
"ButtonAdd"
runat
=
"server"
Text
=
"Add Row"
OnClick
=
"ButtonAdd_Click"
/>
<
asp:placeholder
ID
=
"Placeholder1"
runat
=
"server"
></
asp:placeholder
>
</
div
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
/>
</
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;
public
partial
class
Default4 : System.Web.UI.Page
{
private
List<ProjectItem> ProjectItemList
{
get
{
if
(ViewState[
"ProjectItemList"
] ==
null
)
{
ProjectItem projectItem =
new
ProjectItem();
List<ProjectItem> list =
new
List<ProjectItem>();
list.Add(projectItem);
ViewState[
"ProjectItemList"
] = list;
}
return
(List<ProjectItem>)ViewState[
"ProjectItemList"
];
}
set
{ ViewState[
"ProjectItemList"
] = value; }
}
private
List<ProjectCode> ProjectCodeList
{
get
{
if
(ViewState[
"ProjectCodeList"
] ==
null
)
{
List<ProjectCode> list =
new
List<ProjectCode>();
list.Add(
new
ProjectCode(
"P1"
,
"Project 1"
));
list.Add(
new
ProjectCode(
"P2"
,
"Project 2"
));
list.Add(
new
ProjectCode(
"P3"
,
"Project 3"
));
list.Add(
new
ProjectCode(
"P4"
,
"Project 4"
));
list.Add(
new
ProjectCode(
"P5"
,
"Project 5"
));
list.Add(
new
ProjectCode(
"P6"
,
"Project 6"
));
list.Add(
new
ProjectCode(
"P7"
,
"Project 7"
));
ViewState[
"ProjectCodeList"
] = list;
}
return
(List<ProjectCode>)ViewState[
"ProjectCodeList"
];
}
set
{ ViewState[
"ProjectCodeList"
] = value; }
}
private
List<ChargeCode> ChargeCodeList
{
get
{
if
(ViewState[
"ChargeCodeList"
] ==
null
)
{
List<ChargeCode> list =
new
List<ChargeCode>();
list.Add(
new
ChargeCode(
"C1"
,
"Charge Code A"
,
"P1"
));
list.Add(
new
ChargeCode(
"C2"
,
"Charge Code B"
,
"P1"
));
list.Add(
new
ChargeCode(
"C3"
,
"Charge Code C"
,
"P1"
));
list.Add(
new
ChargeCode(
"C4"
,
"Charge Code D"
,
"P2"
));
list.Add(
new
ChargeCode(
"C5"
,
"Charge Code E"
,
"P2"
));
list.Add(
new
ChargeCode(
"C6"
,
"Charge Code F"
,
"P3"
));
list.Add(
new
ChargeCode(
"C7"
,
"Charge Code G"
,
"P3"
));
list.Add(
new
ChargeCode(
"C8"
,
"Charge Code H"
,
"P3"
));
list.Add(
new
ChargeCode(
"C9"
,
"Charge Code I"
,
"P4"
));
list.Add(
new
ChargeCode(
"C10"
,
"Charge Code J"
,
"P4"
));
list.Add(
new
ChargeCode(
"C11"
,
"Charge Code K"
,
"P5"
));
list.Add(
new
ChargeCode(
"C12"
,
"Charge Code L"
,
"P5"
));
list.Add(
new
ChargeCode(
"C13"
,
"Charge Code M"
,
"P6"
));
list.Add(
new
ChargeCode(
"C14"
,
"Charge Code N"
,
"P6"
));
list.Add(
new
ChargeCode(
"C15"
,
"Charge Code O"
,
"P7"
));
list.Add(
new
ChargeCode(
"C16"
,
"Charge Code P"
,
"P7"
));
list.Add(
new
ChargeCode(
"C17"
,
"Charge Code Q"
,
"P7"
));
ViewState[
"ChargeCodeList"
] = list;
}
return
(List<ChargeCode>)ViewState[
"ChargeCodeList"
];
}
set
{ ViewState[
"ChargeCodeList"
] = value; }
}
protected
RadGrid Grid
{
get
;
set
;
}
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
this
.InitializeGrid();
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
InitializeAjaxManager();
// Set grid items in edit mode.
Grid.EditIndexes.Clear();
for
(
int
i = 0; i < ProjectItemList.Count; i++)
{
Grid.EditIndexes.Add(i);
}
}
private
void
InitializeAjaxManager()
{
RadAjaxManager ajaxManager = RadAjaxManager.GetCurrent(Page);
if
(ajaxManager ==
null
)
return
;
ajaxManager.AjaxSettings.AddAjaxSetting(ButtonAdd, Grid);
ajaxManager.AjaxSettings.AddAjaxSetting(Grid, Grid);
}
private
void
InitializeGrid()
{
GridBoundColumn boundColumn;
GridNumericColumn numericColumn;
GridDropDownColumn dropDownColumn;
Grid =
new
RadGrid();
// Setup required event handlers.
Grid.NeedDataSource +=
new
GridNeedDataSourceEventHandler(Grid_NeedDataSource);
Grid.ItemCreated +=
new
GridItemEventHandler(Grid_ItemCreated);
Grid.ItemDataBound +=
new
GridItemEventHandler(Grid_ItemDataBound);
Grid.ID =
"GridProject"
;
Grid.AllowSorting =
false
;
Grid.AutoGenerateColumns =
false
;
Grid.AllowMultiRowEdit =
true
;
Grid.Width = Unit.Percentage(100);
Grid.ClientSettings.Selecting.AllowRowSelect =
false
;
Grid.MasterTableView.DataKeyNames =
new
string
[] {
"Id"
};
Grid.MasterTableView.Name =
"MasterTableViewProject"
;
Grid.MasterTableView.DataMember =
"ProjectItem"
;
Grid.MasterTableView.EditMode = GridEditMode.InPlace;
// Initialize the grid columns.
boundColumn =
new
GridBoundColumn();
Grid.MasterTableView.Columns.Add(boundColumn);
boundColumn.Visible =
false
;
boundColumn.UniqueName =
"Id"
;
boundColumn.DataField =
"Id"
;
boundColumn.HeaderText =
"Id"
;
dropDownColumn =
new
GridDropDownColumn();
Grid.MasterTableView.Columns.Add(dropDownColumn);
dropDownColumn.Visible =
true
;
dropDownColumn.UniqueName =
"ComboBoxProjectCode"
;
dropDownColumn.DataField =
"ProjectCode"
;
dropDownColumn.HeaderText =
"Project Code"
;
dropDownColumn.HeaderStyle.Width = Unit.Pixel(200);
dropDownColumn.ItemStyle.Width = Unit.Pixel(200);
dropDownColumn.DropDownControlType = GridDropDownColumnControlType.RadComboBox;
dropDownColumn =
new
GridDropDownColumn();
Grid.MasterTableView.Columns.Add(dropDownColumn);
dropDownColumn.Visible =
true
;
dropDownColumn.UniqueName =
"ComboBoxChargeCode"
;
dropDownColumn.DataField =
"ChargeCode"
;
dropDownColumn.HeaderText =
"Charge Code"
;
dropDownColumn.HeaderStyle.Width = Unit.Pixel(200);
dropDownColumn.ItemStyle.Width = Unit.Pixel(200);
dropDownColumn.DropDownControlType = GridDropDownColumnControlType.RadComboBox;
for
(
int
i = 0; i < 14; i++)
{
numericColumn =
new
GridNumericColumn();
Grid.MasterTableView.Columns.Add(numericColumn);
numericColumn.Visible =
true
;
numericColumn.UniqueName =
"D"
+ i.ToString();
numericColumn.DataField =
"D"
+ i.ToString();
numericColumn.HeaderText =
"D"
+ i.ToString();
numericColumn.DecimalDigits = 2;
numericColumn.HeaderStyle.Width = Unit.Pixel(50);
numericColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
numericColumn.ItemStyle.Width = Unit.Pixel(50);
numericColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
numericColumn.ReadOnly =
false
;
}
Placeholder1.Controls.Add(
this
.Grid);
}
void
Grid_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
Grid.DataSource = ProjectItemList;
}
void
Grid_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
((e.Item.IsInEditMode) && (e.Item
is
GridDataItem))
{
GridDataItem gridDataItem = e.Item
as
GridDataItem;
RadComboBox comboBoxProjectCode;
comboBoxProjectCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxProjectCode"
)).ComboBoxControl;
comboBoxProjectCode.EmptyMessage =
"Select Project Code"
;
comboBoxProjectCode.AutoPostBack =
true
;
comboBoxProjectCode.EnableLoadOnDemand =
true
;
comboBoxProjectCode.MarkFirstMatch =
true
;
comboBoxProjectCode.Filter = RadComboBoxFilter.StartsWith;
comboBoxProjectCode.Width = Unit.Pixel(200);
comboBoxProjectCode.DropDownWidth = Unit.Pixel(300);
comboBoxProjectCode.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(comboBoxProjectCode_SelectedIndexChanged);
comboBoxProjectCode.ItemsRequested +=
new
RadComboBoxItemsRequestedEventHandler(comboBoxProjectCode_ItemsRequested);
RadComboBox comboBoxChargeCode;
comboBoxChargeCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxChargeCode"
)).ComboBoxControl;
comboBoxChargeCode.Width = Unit.Pixel(200);
comboBoxChargeCode.EmptyMessage =
"Select Charge Code"
;
comboBoxChargeCode.EnableLoadOnDemand =
true
;
comboBoxChargeCode.ItemsRequested +=
new
RadComboBoxItemsRequestedEventHandler(comboBoxChargeCode_ItemsRequested);
// Set data values for the combo box.
if
(gridDataItem.DataItem !=
null
)
{
if
(!
string
.IsNullOrEmpty(((ProjectItem)gridDataItem.DataItem).ProjectCode))
{
comboBoxProjectCode.Items.Add(
new
RadComboBoxItem(((ProjectItem)gridDataItem.DataItem).ProjectName, ((ProjectItem)gridDataItem.DataItem).ProjectCode));
}
if
(!
string
.IsNullOrEmpty(((ProjectItem)gridDataItem.DataItem).ChargeCodeName))
{
comboBoxChargeCode.Items.Add(
new
RadComboBoxItem(((ProjectItem)gridDataItem.DataItem).ChargeCodeName, ((ProjectItem)gridDataItem.DataItem).ChargeCode));
}
}
}
}
void
Grid_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
((e.Item.IsInEditMode) && (e.Item
is
GridDataItem))
{
GridDataItem gridDataItem = e.Item
as
GridDataItem;
GridNumericColumnEditor columnEditor;
for
(
int
i = 0; i < 14; i++)
{
columnEditor = (GridNumericColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"D"
+ i.ToString());
columnEditor.NumericTextBox.Width = Unit.Percentage(100);
columnEditor.NumericTextBox.EnabledStyle.HorizontalAlign = HorizontalAlign.Right;
columnEditor.NumericTextBox.MinValue = 0;
columnEditor.NumericTextBox.NumberFormat.DecimalDigits = 2;
columnEditor.NumericTextBox.NumberFormat.KeepTrailingZerosOnFocus =
true
;
columnEditor.NumericTextBox.NumberFormat.AllowRounding =
true
;
}
}
}
void
comboBoxProjectCode_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
GridDataItem gridDataItem = (sender
as
RadComboBox).NamingContainer
as
GridDataItem;
RadComboBox comboBoxChargeCode;
comboBoxChargeCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxChargeCode"
)).ComboBoxControl;
if
(comboBoxChargeCode !=
null
)
{
comboBoxChargeCode.Text =
string
.Empty;
comboBoxChargeCode.SelectedValue =
string
.Empty;
}
}
void
comboBoxProjectCode_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox comboBoxProjectCode = sender
as
RadComboBox;
comboBoxProjectCode.Items.Clear();
foreach
(ProjectCode projectCode
in
ProjectCodeList)
{
comboBoxProjectCode.Items.Add(
new
RadComboBoxItem(projectCode.Name, projectCode.Code));
}
}
void
comboBoxChargeCode_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
RadComboBox comboBoxChargeCode = sender
as
RadComboBox;
GridDataItem gridDataItem = comboBoxChargeCode.NamingContainer
as
GridDataItem;
RadComboBox comboBoxProjectCode;
comboBoxProjectCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxProjectCode"
)).ComboBoxControl;
List<ChargeCode> list = ChargeCodeList.Where(code => code.ProjectCode == comboBoxProjectCode.SelectedValue).ToList();
comboBoxChargeCode.Items.Clear();
foreach
(ChargeCode chargeCode
in
list)
{
comboBoxChargeCode.Items.Add(
new
RadComboBoxItem(chargeCode.Name, chargeCode.Code));
}
}
protected
void
ButtonAdd_Click(
object
sender, EventArgs e)
{
for
(
int
i = 0; i < Grid.MasterTableView.Items.Count; i++)
{
GridDataItem gridDataItem = Grid.MasterTableView.Items[i];
if
(!Grid.MasterTableView.Items[i].IsInEditMode)
continue
;
// Persist existing entered data.
RadComboBox comboBoxProjectCode;
comboBoxProjectCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxProjectCode"
)).ComboBoxControl;
ProjectItemList[i].ProjectCode = comboBoxProjectCode.SelectedValue;
ProjectItemList[i].ProjectName = comboBoxProjectCode.Text;
RadComboBox comboBoxChargeCode;
comboBoxChargeCode = ((GridDropDownListColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"ComboBoxChargeCode"
)).ComboBoxControl;
ProjectItemList[i].ChargeCode = comboBoxChargeCode.SelectedValue;
ProjectItemList[i].ChargeCodeName = comboBoxChargeCode.Text;
GridNumericColumnEditor columnEditor;
for
(
int
j = 0; j < 14; j++)
{
columnEditor = (GridNumericColumnEditor)gridDataItem.EditManager.GetColumnEditor(
"D"
+ j.ToString());
ProjectItemList[i].DataList[j] = (
decimal
)columnEditor.NumericTextBox.Value;
}
}
ProjectItem projectItem =
new
ProjectItem();
ProjectItemList.Add(projectItem);
Grid.EditIndexes.Clear();
for
(
int
i = 0; i < ProjectItemList.Count; i++)
{
Grid.EditIndexes.Add(i);
}
Grid.Rebind();
}
[Serializable]
private
class
ProjectItem
{
public
ProjectItem()
{
DataList =
new
List<
decimal
>();
for
(
int
i = 0; i < 14; i++)
{
DataList.Add(0);
}
}
public
long
Id
{
get
;
set
;
}
public
string
ProjectCode
{
get
;
set
;
}
public
string
ProjectName
{
get
;
set
;
}
public
string
ChargeCode
{
get
;
set
;
}
public
string
ChargeCodeName
{
get
;
set
;
}
public
List<
decimal
> DataList
{
get
;
set
;
}
public
decimal
D0
{
get
{
return
DataList[0]; }
}
public
decimal
D1
{
get
{
return
DataList[1]; }
}
public
decimal
D2
{
get
{
return
DataList[2]; }
}
public
decimal
D3
{
get
{
return
DataList[3]; }
}
public
decimal
D4
{
get
{
return
DataList[4]; }
}
public
decimal
D5
{
get
{
return
DataList[5]; }
}
public
decimal
D6
{
get
{
return
DataList[6]; }
}
public
decimal
D7
{
get
{
return
DataList[7]; }
}
public
decimal
D8
{
get
{
return
DataList[8]; }
}
public
decimal
D9
{
get
{
return
DataList[9]; }
}
public
decimal
D10
{
get
{
return
DataList[10]; }
}
public
decimal
D11
{
get
{
return
DataList[11]; }
}
public
decimal
D12
{
get
{
return
DataList[12]; }
}
public
decimal
D13
{
get
{
return
DataList[13]; }
}
}
[Serializable]
private
class
ProjectCode
{
public
ProjectCode(
string
code,
string
name)
{
Code = code;
Name = name;
}
public
string
Code
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
}
[Serializable]
private
class
ChargeCode
{
public
ChargeCode(
string
code,
string
name,
string
projectCode)
{
Code = code;
Name = name;
ProjectCode = projectCode;
}
public
string
Code
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
string
ProjectCode
{
get
;
set
;
}
}
}
protected
void
rgTest_PreRender(
object
sender, System.EventArgs e)
{
//Hide All Rows on insert and Display the insert Form Only
if
(rgTest.MasterTableView.IsItemInserted)
{
foreach
(GridItem item
in
rgTest.Items)
{
item.Visible =
false
;
}
}
//Hide All Rows on edit and Display the edit Form Only
else
if
(rgTest.EditItems.Count > 0)
{
foreach
(GridDataItem item inrgTest.MasterTableView.Items)
{
if
(item != rgTest.EditItems[0])
{
item.Visible =
false
;
}
}
}
}
.WrappingItem
{
white-space: normal !important;
}
protected override void OnItemCreated(RadMenuEventArgs e)
{
e.Item.CssClass = "WrappingItem";
// e.Item.GroupSettings.Flow = ItemFlow.Vertical;
base.OnItemCreated(e);
}