Here is my code. Any help would be greatly appreciated.
ASPX:
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AMEC_DCR.aspx.cs" Inherits="eB.PlugIn.AMEC.AMEC_DCR" MaintainScrollPositionOnPostback="true" MasterPageFile="~/Framework/MasterPages/ObjectDisplay.Master" ResponseEncoding="utf-8" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" %><asp:Content runat="server" ID="titleC" ContentPlaceHolderID="headerContents"></asp:Content><asp:Content ID="body" ContentPlaceHolderID="bodyContents" runat="server"> <asp:Table ID="Table1" runat="server"> <asp:TableRow ID="head" runat="server"> <asp:TableCell ID="TableCell1" runat="server" Width="137px"> <asp:Image ID="Image1" runat="server" ImageUrl="./images/amec_logo.png" /> </asp:TableCell> <asp:TableCell runat="server"><asp:Image runat="server" ID="OrgLogo"/></asp:TableCell> <asp:TableCell ID="TableCell2" runat="server" HorizontalAlign="Left" VerticalAlign="Middle"> <asp:Label ID="Label1" runat="server" Font-Size="16" Text="Supplier Data Collection System" /> <br /> <asp:Label ID="Label5" runat="server" Text="Project: " /> <asp:Label ID="lblProjectNameValue" runat="server" Text="TO DO" /> <br /> <asp:Label ID="Label6" runat="server" Text="Supplier: " /> <asp:Label ID="lblSupplierValue" runat="server" /> <br /> <asp:Label ID="Label2" runat="server" Text="PO Number: " /> <asp:Label ID="lblPoNameValue" runat="server" ForeColor="red" /> <br /> <br /> </asp:TableCell></asp:TableRow> <asp:TableRow ID="TableRow7" runat="server"> <asp:TableCell ID="RadGridTagsCell" runat="server" ColumnSpan="3" Visible="True"> <telerik:RadGrid ID="RadGridTags" runat="server" AllowPaging="True" PageSize="10" OnNeedDataSource="TagDataNeedsDataSource" AllowFilteringByColumn="True"> <groupingsettings casesensitive="false"></groupingsettings> <ClientSettings AllowKeyboardNavigation="true" EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="true"></Selecting> </ClientSettings> <MasterTableView Width="100%" AutoGenerateColumns="False" DataKeyNames="Tag" HeaderStyle-HorizontalAlign="Center"> <Columns> <%--{"Discipline", "Tag", "Tag Status", "Service Description", "Functional Type", "Physical Tag Type"}--%> <telerik:GridBoundColumn DataField="Discipline" DataType="System.String" HeaderText="Discipline" ReadOnly="True" SortExpression="Discipline" UniqueName="Discipline"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Tag" DataType="System.String" HeaderText="Tag" ReadOnly="True" SortExpression="Tag" UniqueName="Tag" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="TagStatus" DataType="System.String" HeaderText="Tag Status" ReadOnly="True" SortExpression="Tag Status" UniqueName="TagStatus" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Service Description" DataType="System.String" HeaderText="Service Description" ReadOnly="True" SortExpression="Service Description" UniqueName="ServiceDescription"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FunctionalType" DataType="System.String" HeaderText="Functional Type" ReadOnly="True" SortExpression="Functional Type" UniqueName="FunctionalType" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="PhysicalType" DataType="System.String" HeaderText="Physical Type" ReadOnly="True" SortExpression="Physical Type" UniqueName="PhysicalType"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Tag Maturity Level" DataType="System.String" HeaderText="Tag Maturity Level" ReadOnly="True" SortExpression="Tag Maturity Level" UniqueName="TagMaturityLevel" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> </Columns> </MasterTableView> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> </telerik:RadGrid> <br/> </asp:TableCell> </asp:TableRow> <asp:TableRow ID="TableRow1" runat="server"> <asp:TableCell ID="RadGridTagDetailCell" runat="server" ColumnSpan="3" Visible="True"> <telerik:RadGrid ID="RadGridTagDetail" runat="server" AllowPaging="True" PageSize="20" AllowMultiRowEdit="True" OnNeedDataSource="TagDetailDataNeedsDataSource" OnItemCreated="RadGridTagDetail_ItemCreated" MasterTableView-DataKeyNames="Tag" AllowFilteringByColumn="True" OnItemEvent="RadGridTagDetail_ItemEvent" AllowAutomaticUpdates="False" OnItemCommand="RadGridTagDetail_ItemCommand" OnPreRender="RadGridTagDetail_PreRender" AllowSorting="True"> <GroupingSettings CaseSensitive="false"></GroupingSettings> <MasterTableView Width="100%" AutoGenerateColumns="False" DataKeyNames="Tag" EditMode="InPlace" HeaderStyle-HorizontalAlign="Center" AllowAutomaticUpdates="False" CommandItemDisplay="Top"> <CommandItemTemplate> <asp:LinkButton runat="server" ID="UpdateAll" Text="Save Changes" CommandName="UpdateAll">Save Changes</asp:LinkButton> </CommandItemTemplate> <Columns> <%--"Attribute", "Value", "Unit Of Measure","Type", "Category", "Review Status"--%> <telerik:GridBoundColumn DataField="Attribute" DataType="System.String" HeaderText="Attribute" ReadOnly="True" SortExpression="Attribute" UniqueName="Attribute"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="Value" DataType="System.String" HeaderText="Value" SortExpression="Value" UniqueName="Value"> <ItemTemplate> <telerik:RadTextBox runat="server" Text='<%# Eval("Value")%>'></telerik:RadTextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Unit Of Measure" SortExpression="Unit Of Measure" UniqueName="UnitOfMeasure"> <ItemTemplate> <telerik:RadComboBox ID="radComboUOM" runat="server"> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Type" DataType="System.String" HeaderText="Type" SortExpression="Type" UniqueName="Type"> <ItemTemplate> <asp:Label ID="lblType" runat="server" Text='<%# Eval("Type")%>'></asp:Label></ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Category" DataType="System.String" HeaderText="Category" SortExpression="Category" UniqueName="Category"> <ItemTemplate> <asp:Label ID="lblCategory" runat="server" Text='<%# Eval("Category")%>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Review Status" DataType="System.String" HeaderText="Review Status" SortExpression="Review Status" UniqueName="ReviewStatus"> <ItemTemplate> <telerik:RadComboBox ID="radComboReviewStatus" runat="server"> <Items> <telerik:RadComboBoxItem Text="Not Started" Value="0" Selected="true"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Incomplete" Value="1"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Requires Revision" Value="2"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Complete" Value="3"></telerik:RadComboBoxItem> </Items> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings AllowKeyboardNavigation="true"> <Selecting AllowRowSelect="true"></Selecting> </ClientSettings> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> </telerik:RadGrid> </asp:TableCell> </asp:TableRow> </asp:Table> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> <%--<img alt="Loading..." src="./images/loading.gif" style="border: 0;" />--%> </telerik:RadAjaxLoadingPanel> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </telerik:RadScriptManager> <telerik:RadSkinManager ID="QsfSkinManager" runat="server" Skin="MetroTouch" Visible="True" /> <telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="false" Skin="MetroTouch" Visible="False" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGridTags"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTags" /> </UpdatedControls> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadGridTagDetail"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" /> </UpdatedControls> </telerik:AjaxSetting> <%--<telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" LoadingPanelID="RadAjaxLoadingPanel1"> </telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting>--%> </AjaxSettings> </telerik:RadAjaxManager></asp:Content>
Code Behind:
using System;
using System.Collections;
using System.Data;
using System.Globalization;
using System.Web.UI;
using Telerik.Web.UI;
using eB.Library.Web.UI;
namespace eB.PlugIn.AMEC
{
public partial class AMEC_DCR : ObjectSpecificPage
{
private Utils.Data _mData;
private string _mSPoCode;
private DataTable _dtTagDetailData;
protected void Page_Init(object sender, EventArgs e)
{
_mData = new Utils.Data(eBContext.eBSession);
_mSPoCode = Request.QueryString["pocode"];
RadGridTagDetail.ItemCommand += RadGridTagDetail_ItemCommand;
LoadGui();
}
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < RadGridTagDetail.PageSize; i++)
{
RadGridTagDetail.EditIndexes.Add(i);
}
}
protected void RadGridTagDetail_PreRender(object sender, EventArgs e)
{
if (!IsPostBack)
{
foreach (GridItem item in RadGridTagDetail.MasterTableView.Items)
{
if (item is GridEditableItem)
{
GridEditableItem editableItem = item as GridDataItem;
editableItem.Edit = true;
}
}
RadGridTagDetail.Rebind();
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (RadGridTags.SelectedIndexes.Count == 0)
RadGridTags.SelectedIndexes.Add(0);
RadGridTagDetail.Rebind();
}
private void LoadGui()
{
var personNameSplit = eBContext.PersonName.Split(',');
var currentUser = personNameSplit[1].Trim(' ');
lblSupplierValue.Text = string.Format(" {0}", currentUser);
lblPoNameValue.Text = _mSPoCode;
lblProjectNameValue.Text = "Mad Dog 2";
OrgLogo.ImageUrl = _mData.GetOrganizationLogo(Server.MapPath(@"~\PlugIns\AMEC\images"));
//lblProjectNameValue.Text = _mData.GetPoPrimaryPi(_mSPoCode);
}
int _totalItemCount;
protected void RadGridTagDetail_ItemCreated(object sender, GridItemEventArgs e)
{
var gridPagerItem = e.Item as GridPagerItem;
if (gridPagerItem != null)
{
var pagerItem = gridPagerItem;
var pageSizeCombo = (RadComboBox)pagerItem.FindControl("PageSizeComboBox");
var item1 = new RadComboBoxItem("All", _totalItemCount.ToString(CultureInfo.InvariantCulture));
item1.Attributes.Add("ownerTableViewId", gridPagerItem.OwnerTableView.ClientID);
pageSizeCombo.Items.Add(item1);
}
if (e.Item.ItemType != GridItemType.Item && e.Item.ItemType != GridItemType.AlternatingItem) return;
var item = (GridDataItem)e.Item;
item.Edit = true;
var comboBoxUom = (RadComboBox)(item.FindControl("radComboUOM"));
var comboBoxReviewStatus = (RadComboBox) (item.FindControl("radComboReviewStatus"));
comboBoxReviewStatus.SelectedIndex = 0;
if (comboBoxUom == null) return;
var dataRow = item.DataItem as DataRowView;
if (dataRow == null) return;
var attName = dataRow["Attribute"].ToString();
var currentVal = dataRow["Unit Of Measure"].ToString();
var values = _mData.GetUomValueList(item.GetDataKeyValue("Tag").ToString(), attName);
if (values.Count == 0)
return;
comboBoxUom.DataSource = values;
comboBoxUom.SelectedValue = currentVal;
}
protected void RadGridTagDetail_ItemEvent(object sender, GridItemEventArgs e)
{
if (e.EventInfo is GridInitializePagerItem)
{
_totalItemCount = (e.EventInfo as GridInitializePagerItem).PagingManager.DataSourceCount;
}
}
protected void TagDetailDataNeedsDataSource(object sender, GridNeedDataSourceEventArgs e)
{
_dtTagDetailData = (DataTable)ViewState[RadGridTags.SelectedValue.ToString()];
if (_dtTagDetailData == null)
{
_dtTagDetailData = _mData.GetTagDetailsData(RadGridTags.SelectedValue.ToString());
ViewState[RadGridTags.SelectedValue.ToString()] = _dtTagDetailData;
}
RadGridTagDetail.DataSource = _dtTagDetailData;
}
protected void TagDataNeedsDataSource(object sender, GridNeedDataSourceEventArgs e)
{
var dtTagData = (DataTable)ViewState[_mSPoCode];
if (dtTagData == null)
{
dtTagData = _mData.GetPoTagData(_mSPoCode);
ViewState[_mSPoCode] = dtTagData;
}
RadGridTags.DataSource = dtTagData;
RadGridTags.SelectedIndexes.Add(0);
}
protected void RadGridTagDetail_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName != "UpdateAll") return;
if (RadGridTagDetail.EditIndexes.Count == 0)
{
return;
}
foreach (GridDataItem item in RadGridTagDetail.EditItems)
{
UpdateItem(item.EditFormItem);
}
e.Item.OwnerTableView.Rebind();
}
private void UpdateItem(GridEditableItem editedItem)
{
if (editedItem == null)
return;
//Locate the changed row in the DataSource
var changedRows = _dtTagDetailData.Select("Tag = '" + editedItem.GetDataKeyValue("Tag") + "'");
if (changedRows.Length != 1)
{
return;
}
//Update new values
var newValues = new Hashtable();
//The GridTableView will fill the values from all editable columns in the hash
editedItem.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
var changedRow = changedRows[0];
changedRow.BeginEdit();
try
{
foreach (DictionaryEntry entry in newValues)
{
changedRow[(string)entry.Key] = entry.Value;
}
changedRow.EndEdit();
}
catch (Exception)
{
changedRow.CancelEdit();
}
}
}
}