or
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" Skin="Web20"></telerik:RadFormDecorator><asp:Panel ID="StatesEditPanel" CssClass="maintext" BackColor="#FFFFFF" runat="server"> <asp:Label ID="lblStatesHeader" runat="server" Font-Bold="True"></asp:Label><br /> <table id="StatesTable" border="0" cellspacing="1" cellpadding="2" width="100%"> <tr> <td style="font-weight: bold; text-align: right; vertical-align: middle;"> State Abbreviation: </td> <td style="text-align: left;"> <telerik:RadTextBox ID="rtxtStateAbbrev" runat="server" Width="10%" EmptyMessage="" Skin="Web20" Font-Size="9pt" BackColor="#fdf5e6" MaxLength="2" SelectionOnFocus="SelectAll" ValidationGroup="lookupedit" /> <asp:RequiredFieldValidator ID="StateAbbrevRequiredFieldValidator" runat="server" ControlToValidate="rtxtStateAbbrev" Display="Dynamic" InitialValue=" ---" EnableClientScript="true" ErrorMessage="You must enter a State Abbreviation!" Font-Size="7pt" ForeColor="Red" ValidationGroup="lookupedit" Font-Bold="true" /> </td> </tr> <tr> <td style="font-weight: bold; text-align: right; vertical-align: middle;"> Description: </td> <td style="text-align: left;"> <telerik:RadTextBox ID="rtxtStateName" runat="server" Width="40%" Skin="Web20" Font-Size="9pt" BackColor="#fdf5e6" MaxLength="10" ValidationGroup="lookupedit" /> <asp:RequiredFieldValidator ID="StateDescriptionRequiredFieldValidator" runat="server" ControlToValidate="rtxtStateName" EnableClientScript="true" Display="Dynamic" InitialValue=" ---" Text="You must enter a Description!" Font-Size="7pt" ForeColor="Red" ValidationGroup="lookupedit" Font-Bold="true" /> </td> </tr> <tr> <td style="font-weight: bold; text-align: right; vertical-align: middle;" class="style1"> Tax Rate: </td> <td style="text-align: left;" class="style1"> <telerik:RadTextBox ID="rtxtStateTaxRate" runat="server" Width="20%" EmptyMessage="" Skin="Web20" Font-Size="9pt" BackColor="#fdf5e6" MaxLength="10" SelectionOnFocus="SelectAll" CausesValidation="True" ValidationGroup="lookupedit" /> <asp:RequiredFieldValidator ID="StateTaxRateRequiredFieldValidator" runat="server" ControlToValidate="rtxtStateTaxRate" Display="Dynamic" InitialValue=" ---" EnableClientScript="true" ErrorMessage="<br />You must enter a State Tax Rate!" Font-Size="7pt" ForeColor="Red" Font-Bold="true" ValidationGroup="lookupedit" /> </td> </tr> <tr> <td colspan="2" style="text-align: center;"> <asp:Button ID="btnStatesSave" runat="server" Font-Bold="True" Text="Save" CausesValidation="true" Width="80px" ValidationGroup="lookupedit" /> <asp:Button ID="btnStatesDelete" runat="server" Font-Bold="True" Text="Delete" CausesValidation="true" Width="80px" /> </td> </tr> </table></asp:Panel><ExportSettings Excel-Format="Html" ExportOnlyData="true" IgnorePaging="true" OpenInNewWindow="true"> </ExportSettings><%@ Page Title="" Language="C#" AutoEventWireup="true" CodeBehind="Test2.aspx.cs" Inherits="mtc_knowledgebase.Test2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <style type="text/css"> span.riSingle { position: static; } </style> </head> <body class="BODY"> <form runat="server" id="mainForm" method="post"> <telerik:RadScriptManager runat="server" ID="RadScriptManager1" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" /> <telerik:RadGrid AllowSorting="True" AutoGenerateColumns="False" DataSourceID="DNDataSource" ID="DNGrid" runat="server" GridLines="Both" AllowPaging="true" AllowFilteringByColumn="true" CssClass="span.riSingle" OnItemCommand="DNGrid_OnItemCommand"> <MasterTableView CommandItemDisplay="Bottom" DataKeyNames="dn_hdr_id" EditMode="PopUp" Name="HeaderGrid" AllowAutomaticInserts="true" AllowAutomaticUpdates="true"> <NestedViewTemplate> <asp:Panel runat="server" ID="InnerContainer"> <telerik:RadTabStrip runat="server" ID="TabStip1" MultiPageID="Multipage1" SelectedIndex="0" DataFieldParentID="dn_hdr_id"> <Tabs> <telerik:RadTab runat="server" Text="DN Items" PageViewID="ItemView"> </telerik:RadTab> <telerik:RadTab runat="server" Text="DN Approvals" PageViewID="ApprovalView"> </telerik:RadTab> </Tabs> </telerik:RadTabStrip> <telerik:RadMultiPage runat="server" ID="Multipage1" SelectedIndex="0" RenderSelectedPageOnly="false"> <telerik:RadPageView runat="server" ID="ItemView"> <telerik:RadGrid AllowSorting="True" AutoGenerateColumns="False" DataSourceID="DNDtlDataSource" ID="DetailGrid" runat="server" GridLines="Both" CssClass="span.riSingle" BackColor="Azure" HeaderStyle-ForeColor="DimGray" HeaderStyle-BorderColor="DarkGoldenrod" HeaderStyle-BorderWidth="2px" OnInsertCommand="GridOnInsert" OnUpdateCommand="GridOnUpdate" OnItemCommand="GridGetId"> <MasterTableView CommandItemDisplay="Bottom" DataKeyNames="dn_dtl_id,dn_hdr.dn_hdr_id" EditMode="PopUp" Name="DetailGrid"> <CommandItemSettings ShowExportToExcelButton="false" ShowRefreshButton="false" AddNewRecordText="Add New Detail Record" /> <EditFormSettings EditColumn-ButtonType="PushButton" EditColumn-UpdateText="Process Update" PopUpSettings-Modal="true" PopUpSettings-Width="85%" /> <Columns> <telerik:GridBoundColumn UniqueName="DTL_DN_DTL_ID" DataField="dn_dtl_id" ReadOnly="true" Visible="false" /> <telerik:GridEditCommandColumn EditText="EDIT" UniqueName="btnEdit" ButtonType="PushButton" /> <telerik:GridAttachmentColumn DataSourceID="DNDtlDataSource2" MaxFileSize="10485760" EditFormHeaderTextFormat="Upload File:" HeaderText="Attachment" AttachmentDataField="dn_file_att" AttachmentKeyFields="dn_dtl_id" FileNameTextField="dn_file_nm" DataTextField="dn_file_nm" UniqueName="DTL_AttachmentColumn" AllowedFileExtensions=".pdf,.jpg" /> <telerik:GridBoundColumn UniqueName="DTL_CREAT_BY" HeaderText="Created By" DataField="creat_by" ReadOnly="true" /> <telerik:GridBoundColumn UniqueName="DTL_CREAT_DT" HeaderText="Date Created" DataField="creat_dt" ReadOnly="true" DataFormatString="{0:MM/dd/yy}" /> <telerik:GridBoundColumn UniqueName="DTL_UPDT_BY" HeaderText="Last Updated By" DataField="updt_by" ReadOnly="true" /> <telerik:GridBoundColumn UniqueName="DTL_UPDT_DT" HeaderText="Last Updated" DataField="updt_dt" DataFormatString="{0:MM/dd/yy}" ReadOnly="true" /> </Columns> </MasterTableView> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView runat="server" ID="ApprovalView"> <telerik:RadGrid AllowSorting="True" AutoGenerateColumns="False" ID="ApprovalGrid" DataSourceID="DNDataSource2" runat="server" GridLines="Both" CssClass="span.riSingle" BackColor="Azure" EnableViewState="true" HeaderStyle-ForeColor="DimGray" HeaderStyle-BorderColor="DarkGoldenrod" HeaderStyle-BorderWidth="2px"> <MasterTableView CommandItemDisplay="Bottom" DataKeyNames="dn_hdr_id" EditMode="PopUp" Name="ApprovalGridMaster"> <CommandItemSettings ShowExportToExcelButton="false" ShowRefreshButton="false" ShowAddNewRecordButton="false" /> <EditFormSettings EditColumn-ButtonType="PushButton" EditColumn-UpdateText="Process Update" PopUpSettings-Modal="true" PopUpSettings-Width="85%" /> <Columns> <telerik:GridEditCommandColumn EditText="EDIT" UniqueName="btnEdit" ButtonType="PushButton" /> <telerik:GridBoundColumn UniqueName="QR_NM" HeaderText="Quality Signoff" DataField="qr_nm" /> <telerik:GridDateTimeColumn UniqueName="QR_DT" HeaderText="Quality Signoff Date" DataField="qr_dt" DataFormatString="{0:MM/dd/yy}" /> </Columns> </MasterTableView> </telerik:RadGrid> </telerik:RadPageView> </telerik:RadMultiPage> </asp:Panel> </NestedViewTemplate> <Columns> <telerik:GridEditCommandColumn EditText="EDIT" UniqueName="btnEdit" ButtonType="PushButton" /> <telerik:GridBoundColumn UniqueName="dn_hdr_id" HeaderText="DN ID" DataField="dn_hdr_id" ReadOnly="true" /> <telerik:GridBoundColumn UniqueName="SUP_NM" HeaderText="Operator/Supervisor" DataField="sup_nm" /> <telerik:GridDateTimeColumn UniqueName="SUP_DT" HeaderText="O/S Date" DataField="sup_dt" DataFormatString="{0:MM/dd/yy}" /> </Columns> </MasterTableView> <ClientSettings AllowKeyboardNavigation="true"> <Scrolling AllowScroll="true" ScrollHeight="600px" /> </ClientSettings> <ExportSettings ExportOnlyData="true" IgnorePaging="true" /> </telerik:RadGrid> <asp:EntityDataSource ID="DNDataSource" runat="server" ConnectionString="name=mtc_kbaseEntities" DefaultContainerName="mtc_kbaseEntities" EntitySetName="dn_hdr" OrderBy="it.updt_dt" Include="cust, prt, orig_1" EnableInsert="true" EnableUpdate="true"> </asp:EntityDataSource> <asp:EntityDataSource ID="DNDataSource2" runat="server" ConnectionString="name=mtc_kbaseEntities" DefaultContainerName="mtc_kbaseEntities" EntitySetName="dn_hdr" EnableUpdate="true"> </asp:EntityDataSource> <asp:EntityDataSource ID="DNDtlDataSource2" runat="server" ConnectionString="name=mtc_kbaseEntities" DefaultContainerName="mtc_kbaseEntities" EntitySetName="dn_dtl"> </asp:EntityDataSource> <asp:EntityDataSource ID="DNDtlDataSource" runat="server" ConnectionString="name=mtc_kbaseEntities" DefaultContainerName="mtc_kbaseEntities" EntitySetName="dn_dtl" Include="orig_2"> </asp:EntityDataSource> </form> </body> </html> using System; using System.Data; using System.Linq; using System.Web; using Telerik.Web.UI; namespace mtc_knowledgebase { public partial class Test2 : System.Web.UI.Page { #region Variables private int _dnHdrId; private int _dnDtlId; private string _fileName; private byte[] _fileData; private string _curUser; private DateTime? _curDt; private int _errLevel; #endregion protected void Page_Load(object sender, EventArgs e) { DNDtlDataSource2.Where = "it.dn_dtl_id == 0"; } /// <summary> /// This will be used in place of the auto insert event based on File Attachment requirements /// </summary> /// <param name="sender"> /// This method is called on the Grid Insert Event /// </param> /// <param name="e"> /// The entire Inserted record will be passed /// </param> protected void GridOnInsert(object sender, GridCommandEventArgs e) { if ("DetailGrid".Equals(e.Item.OwnerTableView.Name)) { var editItem = e.Item as GridEditableItem; GetRecordInfo(editItem); if (_errLevel == 0) { try { using (var db = new mtc_kbaseEntities()) { var newDnDtl = new dn_dtl { dn_hdrReference = { EntityKey = new EntityKey("mtc_kbaseEntities.dn_hdr", "dn_hdr_id", _dnHdrId) }, dn_file_nm = _fileName, dn_file_att = _fileData, creat_by = _curUser, creat_dt = _curDt, updt_by = _curUser, updt_dt = _curDt }; db.AddTodn_dtl(newDnDtl); db.SaveChanges(); } } catch (Exception ex) { Response.Write("<script type=\"text/javascript\" language=\"javascript\">"); Response.Write("alert('" + ex.Message + "');"); Response.Write("</script>"); } } } } /// <summary> /// This will be used in place of the auto update event based on File Attachment requirements /// </summary> /// <param name="sender"> /// This method is called on the Grid Update Event /// </param> /// <param name="e"> /// The entire Updated record will be passed /// </param> protected void GridOnUpdate(object sender, GridCommandEventArgs e) { if ("DetailGrid".Equals(e.Item.OwnerTableView.Name)) { var editItem = e.Item as GridEditableItem; _dnDtlId = Convert.ToInt32((editItem.EditManager.GetColumnEditor("DTL_DN_DTL_ID") as GridTextBoxColumnEditor).Text); GetRecordInfo(editItem); if (_errLevel == 0) { try { using (var db = new mtc_kbaseEntities()) { var updDtl = db.dn_dtl.First(t => t.dn_dtl_id == _dnDtlId); updDtl.dn_file_nm = _fileName; updDtl.dn_file_att = _fileData; updDtl.updt_by = _curUser; updDtl.updt_dt = _curDt; db.SaveChanges(); } } catch (Exception ex) { Response.Write("<script type=\"text/javascript\" language=\"javascript\">"); Response.Write("alert('" + ex.Message + "');"); Response.Write("</script>"); } } } } /// <summary> /// If a request for the file download is initiated, this will update the datasource /// </summary> /// <param name="sender"> /// The datasource for the attachment requires the ID of the record /// </param> /// <param name="e"> /// Only fire the event if it's a download request /// </param> protected void GridGetId(object sender, GridCommandEventArgs e) { if (e.CommandName == "DownloadAttachment") { var args = e as GridDownloadAttachmentCommandEventArgs; _dnDtlId = (int)args.AttachmentKeyValues["dn_dtl_id"]; DNDtlDataSource2.Where = "it.dn_dtl_id == " + _dnDtlId; } } /// <summary> /// This is a common method for setting variables based on the attachment details /// </summary> /// <param name="editItem"> /// The edit item. /// </param> protected void GetRecordInfo(GridEditableItem editItem) { _errLevel = 0; RadUpload upload = ((GridAttachmentColumnEditor)editItem.EditManager.GetColumnEditor("DTL_AttachmentColumn")).RadUploadControl; if (upload.InvalidFiles.Count > 0) { _errLevel = 1; Response.Write("<script type=\"text/javascript\" language=\"javascript\">"); Response.Write("alert('Only PDF or JPG files smaller than 10MB are allowed');"); Response.Write("</script>"); return; } if (upload.UploadedFiles.Count != 0) { _fileName = upload.UploadedFiles[0].GetName(); _fileData = ((GridAttachmentColumnEditor)editItem.EditManager.GetColumnEditor("DTL_AttachmentColumn")).UploadedFileContent; } _curUser = HttpContext.Current.User.Identity.Name.ToString().Replace("MORGANGROUPPLC\\", string.Empty); _curDt = DateTime.Now; } protected void DNGrid_OnItemCommand(object sender, GridCommandEventArgs e) { GridDataItem grdDataitem = (GridDataItem)e.Item; if (e.CommandName == RadGrid.ExpandCollapseCommandName) { _dnHdrId = (int)grdDataitem.GetDataKeyValue("dn_hdr_id"); DNDtlDataSource.Where = "it.dn_hdr.dn_hdr_id == " + _dnHdrId; DNDataSource2.Where = "it.dn_hdr_id == " + _dnHdrId; } } } }