or
<telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn" ButtonType="ImageButton" ImageUrl="~/images/icons/trash_16x16.gif"> <HeaderStyle Width="20px"></HeaderStyle> <ItemStyle Width="20px"></ItemStyle></telerik:GridButtonColumn><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); }