<telerik:RadGrid ID="grdChecksIssued" runat="server" GridLines="None" AllowPaging="True" AllowAutomaticUpdates="true" AllowAutomaticDeletes="True" AllowAutomaticInserts="false" AllowSorting="True" AutoGenerateColumns="False" AllowMultiRowEdit="false"> <headercontextmenu cssclass="GridContextMenu GridContextMenu_Default" enableimagesprites="True"> </headercontextmenu> <mastertableview CommandItemDisplay="Top" AllowSorting="true" TableLayout="Fixed" CommandItemSettings-AddNewRecordText="Add Issued Check" AllowMultiColumnSorting="false" EditMode="InPlace" InsertItemDisplay="Bottom" AutoGenerateColumns="false" NoMasterRecordsText="No checks issued today."> <commanditemsettings ShowRefreshButton="False" /> <Columns> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"> <HeaderStyle Width="50px" /> </telerik:GridButtonColumn> <telerik:GridEditCommandColumn UniqueName="EditCommandColumn1" UpdateText="Save" InsertText="Save"> <HeaderStyle Width="50px" /> <ItemStyle cssclass="EditColumn" /> </telerik:GridEditCommandColumn> <telerik:GridNumericColumn DataField="PPIssuedID" DataType="System.Int64" HeaderText="PPIssuedID" SortExpression="PPIssuedID" UniqueName="PPIssuedID" Visible="False"> </telerik:GridNumericColumn> <telerik:GridNumericColumn DataField="UserID" DataType="System.Int64" HeaderText="UserID" SortExpression="UserID" UniqueName="UserID" Visible="False"> </telerik:GridNumericColumn> <telerik:GridDropDownColumn DataField="AcctNo" DataType="System.Int64" HeaderText="Account" SortExpression="AcctNo" DataSourceID="odsPPAccounts" UniqueName="AcctNo" DropDownControlType="RadComboBox" ListTextField="DisplayNameAcct" ListValueField="AcctNo"> <HeaderStyle Width="140px" /> <ItemStyle CssClass="AcctNoColumn" /> </telerik:GridDropDownColumn> <telerik:GridNumericColumn DataField="SerialNo" DataType="System.Int32" ColumnEditorID="gceSerialNo" HeaderText="Serial No." SortExpression="SerialNo" UniqueName="SerialNo"> <HeaderStyle HorizontalAlign="Right" Width="75px" /> <ItemStyle HorizontalAlign="Right" cssclass="SerialNoColumn" /> </telerik:GridNumericColumn> <telerik:GridDateTimeColumn DataField="WriteDate" HeaderText="Write Date" SortExpression="WriteDate" UniqueName="WriteDate" DataFormatString="{0:MM/dd/yyyy}" DataType="System.DateTime" ColumnEditorID="gceWriteDate"> <HeaderStyle Width="100px" /> </telerik:GridDateTimeColumn> <telerik:GridNumericColumn DataField="Amount" HeaderText="Amount" ShowSortIcon="true" SortExpression="Amount" UniqueName="Amount" DataType="System.Decimal" NumericType="Currency" ColumnEditorID="gceAmount"> <HeaderStyle Width="95px" HorizontalAlign="Right" /> <ItemStyle HorizontalAlign="Right" CssClass="AmountColumn" /> </telerik:GridNumericColumn> <telerik:GridBoundColumn DataField="Payee" HeaderText="Payee" ColumnEditorID="gcePayee" SortExpression="Payee" UniqueName="Payee" AllowSorting="true"> <ItemStyle CssClass="IssCheckPayee" /> </telerik:GridBoundColumn> <telerik:GridCheckBoxColumn DataField="IsVoid" DataType="System.Boolean" HeaderText="Void" SortExpression="IsVoid" UniqueName="IsVoid"> <HeaderStyle Width="65px" /> </telerik:GridCheckBoxColumn> </Columns> </mastertableview> </telerik:RadGrid> <telerik:GridNumericColumnEditor ID="gceSerialNo" runat="server"> <NumericTextBox ID="NumericTextBox1" runat="server" MaxLength="10" MinValue="0" Width="45px"> <NumberFormat DecimalDigits="0" GroupSeparator="" DecimalSeparator=" " /> <EnabledStyle HorizontalAlign="Right" /> </NumericTextBox> </telerik:GridNumericColumnEditor> <telerik:GridNumericColumnEditor ID="gceAmount" runat="server"> <NumericTextBox ID="NumericTextBox2" runat="server" MinValue="0" MaxValue="999999999999999.99"> <NumberFormat DecimalDigits="2" KeepTrailingZerosOnFocus="true" PositivePattern="$n" /> <EnabledStyle HorizontalAlign="Right" Width="65px" /> </NumericTextBox> </telerik:GridNumericColumnEditor> <telerik:GridDateTimeColumnEditor ID="gceWriteDate" runat="server"> <TextBoxStyle Width="90px" /> </telerik:GridDateTimeColumnEditor> <telerik:GridTextBoxColumnEditor ID="gcePayee" runat="server"> <TextBoxStyle Width="100px" /> </telerik:GridTextBoxColumnEditor> <asp:ObjectDataSource ID="odsPPAccounts" runat="server" DataObjectTypeName="clsDDA" SelectMethod="GetPPAccounts" TypeName="WebLinks.PosPayMain" />Private Sub grdChecksIssued_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles grdChecksIssued.ItemCommand Select Case e.CommandName Case RadGrid.InitInsertCommandName grdChecksIssued.MasterTableView.ClearEditItems() Case RadGrid.EditCommandName grdChecksIssued.MasterTableView.IsItemInserted = False Case RadGrid.PerformInsertCommandName, _ RadGrid.UpdateCommandName SaveRow(e.Item) Case RadGrid.DeleteCommandName Dim hshCells As New Hashtable() CType(e.Item, GridDataItem).ExtractValues(hshCells) DeleteRow(hshCells) End Select End Sub Private Sub grdChecksIssued_NeedDataSource(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles grdChecksIssued.NeedDataSource grdChecksIssued.DataSource = GetRows() End SubNot exactly accurate, but telerik won't let me edit the title.
The grid is a list of documents the user has stored. To view a stored document, I created the view link; within the ItemCommand event handler I create a file and stream it back to the user as shown below. However, the javascript to open a window to facilitate the streaming never gets invoked (except in IE browsers).
This is in a user control, although I don't think that's important. Here's the mark-up:
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> var mediaList = {}; mediaList.get_AddDocumentModalUrl = function mediaList_getAddDocumentModalUrl() { return '<%= Page.ResolveClientUrl("~/MediaLibrary/Modals/AddDocument.aspx") %>'; } mediaList.get_ViewDocumentModalUrl = function mediaList_getViewDocumentModalUrl(mimeType) { var url = '<%= Page.ResolveClientUrl("~/MediaLibrary/Modals/ViewDocument.aspx") %>' + '?type=' + mimeType; return url; } //On insert and update buttons click temporarily disables ajax to perform upload actions //for a more detailed description of why we need this. function conditionalPostback(sender, eventArgs) { var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig"); if (eventArgs.get_eventTarget().match(theRegexp)) { var upload = $find(window['UploadId']); //AJAX is disabled only if file is selected for upload (i.e., new documents) if (upload != null && upload.getFileInputs()[0].value != "") { eventArgs.set_enableAjax(false); } } } function validateRadUpload(source, e) { e.IsValid = false; var upload = $find(source.parentNode.getElementsByTagName('div')[0].id); var inputs = upload.getFileInputs(); for (var i = 0; i < inputs.length; i++) { //check for empty string or invalid extension if (inputs[i].value != "" && upload.isExtensionValid(inputs[i].value)) { e.IsValid = true; break; } } } </script></telerik:RadCodeBlock><telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> <script type="text/javascript"> mediaList.onAddDocumentWindowClosed = function mediaList.onAddDocumentWindowClosed(sender, eventArgs) { var returnValue = eventArgs.get_argument(); if (!Utils.WasRadWindowCancelled(returnValue, true)) { __doPostBack('', ''); } } mediaList.openAddDocumentWindow = function mediaList_openAddDocumentWindow() { Utils.OpenRadWindow ( mediaList.get_AddDocumentModalUrl(), 600, 400, mediaList.onAddDocumentWindowClosed ); } mediaList.openViewWindow = function mediaList_openViewWindow(mimeType) { document.getElementById("<%= streamFrame.ClientID %>").src = mediaList.get_ViewDocumentModalUrl(mimeType); } </script></telerik:RadScriptBlock><telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" ClientEvents-OnRequestStart="conditionalPostback"> <asp:Panel ID="pnlMsg" runat="server"> <asp:Label ID="lblMsg" runat="server" Style="color: Red; font-weight: bold;" /> </asp:Panel> <telerik:RadGrid ID="grdDocumentLibrary" runat="server" Skin="Default" AutoGenerateColumns="false" Width="100%" AllowPaging="true" PageSize="10" OnItemDataBound="grdDocumentLibrary_ItemDataBound" AllowAutomaticInserts="false" AllowAutomaticUpdates="false" OnEditCommand="grdDocumentLibrary_Edit" OnUpdateCommand="grdDocumentLibrary_Update" OnInsertCommand="grdDocumentLibrary_Insert" OnItemCommand="grdDocumentLibrary_ItemCommand" OnItemCreated="grdDocumentLibrary_ItemCreated" ShowStatusBar="true"> <PagerStyle Mode="NumericPages" AlwaysVisible="false" Position="Bottom" CssClass="Pager" /> <MasterTableView CommandItemDisplay="Top" ClientDataKeyNames="DocumentID" DataKeyNames="DocumentID"> <NoRecordsTemplate> <asp:Label Text="No documents to display" runat="server" /></NoRecordsTemplate> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditColumn"> </telerik:GridEditCommandColumn> <telerik:GridBoundColumn DataField="DocumentID" Visible="false" ReadOnly="true" UniqueName="DocID" /> <telerik:GridTemplateColumn HeaderText="Document Name" UniqueName="DocName" ReadOnly="false"> <ItemTemplate> <asp:Label ID="lblDocName" runat="server" Text='<%#Eval("Name") %>' /> </ItemTemplate> <EditItemTemplate> <telerik:RadUpload ID="ruDocument" runat="server" MaxFileInputsCount="1" /> <asp:CustomValidator ID="cvDocument" runat="server" ClientValidationFunction="validateRadUpload" ErrorMessage="Please select a file" Display="Dynamic" /> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Description" UniqueName="Description"> <ItemTemplate> <asp:Label ID="lblDescription" runat="server" Text='<%# Eval("Description") %>' /> </ItemTemplate> <EditItemTemplate> <telerik:RadTextBox ID="txtDescription" runat="server" Text='<%# Bind("Description") %>' Columns="50" Rows="5" TextMode="MultiLine" /> <des:RequiredTextValidator ID="rtvDescription" runat="server" ControlIDToEvaluate="txtDescription" ErrorMessage="* Required" /> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn HeaderText="Date Created" DataField="CreatedDate" ReadOnly="true" DataFormatString="{0:d}" /> <telerik:GridBoundColumn HeaderText="Operator" DataField="CreatedBy" ReadOnly="true" /> <telerik:GridImageColumn ImageUrl="~/Images/Tick.gif" HeaderText="Archived?" UniqueName="ArchivedColumn" /> <telerik:GridTemplateColumn ReadOnly="true" UniqueName="ViewColumn"> <ItemTemplate> <asp:LinkButton ID="lnkView" runat="server" Text="View" CommandArgument='<%#Eval("DocumentID") %>' CommandName="View" /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <EditFormSettings> <EditColumn ButtonType="PushButton" /> </EditFormSettings> </MasterTableView> </telerik:RadGrid></telerik:RadAjaxPanel><telerik:RadAjaxLoadingPanel ID="loadingPanel" runat="server" Skin="Default" /><telerik:RadAjaxManagerProxy ID="ajaxProxy" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="grdDocumentLibrary"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="grdDocumentLibrary" LoadingPanelID="loadingPanel" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManagerProxy><iframe id="streamFrame" style="width: 1%; height: 1%" frameborder="0" scrolling="no" runat="server"></iframe>And the ItemCreated event handler, where I set up the "View" link.
protected void grdDocumentLibrary_ItemCreated(object sender, GridItemEventArgs e){ if (e.Item is GridDataItem) { LinkButton btn = (LinkButton)((GridDataItem)e.Item)["ViewColumn"].FindControl("lnkView"); Page page = HttpContext.Current.CurrentHandler as Page; Telerik.Web.UI.RadAjaxManager ajaxMgr = Telerik.Web.UI.RadAjaxManager.GetCurrent(page); if (ajaxMgr != null) { ajaxMgr.AjaxSettings.AddAjaxSetting(btn, grdDocumentLibrary, loadingPanel); } }}And here's where I handle the ItemCommand:
protected void grdDocumentLibrary_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == RadGrid.InitInsertCommandName) { e.Canceled = true; e.Item.OwnerTableView.InsertItem(new PartnerDocument()); } else if (e.CommandName.Equals("View")) { BernardClientContext bcc = BuildClientContext(); DocumentService ds = new DocumentService(new DocumentRepository(bcc)); Document doc = ds.GetById(new Guid((string)e.CommandArgument)); string filePath = System.Configuration.ConfigurationManager.AppSettings["GeneratedDocuments"]; if (HttpContext.Current != null) { filePath = HttpContext.Current.Server.MapPath(filePath); } string fileName = null; Mutex fileMutex = null; try { while (true) { fileName = doc.FileName + "_" + System.DateTime.Now.ToString("ddMMyyyyhhmmss") + doc.DocumentType.Name; bool created; fileMutex = new Mutex(true, fileName.Replace("\\", "_"), out created); if (fileMutex != null && created) { if (!System.IO.File.Exists(filePath + fileName)) break; fileMutex.ReleaseMutex(); } System.Threading.Thread.Sleep(1000); } File.WriteAllBytes(filePath + fileName, doc.DocumentContent.Content); Page page = HttpContext.Current.CurrentHandler as Page; Telerik.Web.UI.RadAjaxManager ajaxMgr = Telerik.Web.UI.RadAjaxManager.GetCurrent(page); Session["documentToStream"] = filePath + fileName; if (ajaxMgr != null) { ajaxMgr.ResponseScripts.Add(String.Format("mediaList.openViewWindow('{0}'); return false;", doc.MimeType)); } else { page.ClientScript.RegisterStartupScript(page.GetType(), "documentStream", String.Format("mediaList.openViewWindow('{0}'); return false;", doc.MimeType), true); } } finally { if (fileMutex != null) fileMutex.ReleaseMutex(); } } }
Thanks,
Scott
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ManageSites.aspx.cs" Inherits="ManageSites" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <!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"><link rel="stylesheet" type="text/css" href="eSOMS.css" /><SCRIPT language="javascript" src="Scripts/ShowError.js"></SCRIPT><script language="javascript" src="Scripts/MiscFunctions.js"></script><head runat="server"> <title>Manage Sites</title> </head><body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="ScriptManager1" runat="server"></telerik:RadScriptManager> <telerik:RadAjaxPanel runat="server"> <table> <tr> <td colspan="4"> <telerik:RadGrid runat="server" ID="rgManageSites" AllowAutomaticUpdates="true" AllowAutomaticDeletes="true" EnableAsyncRequests="True" AllowAutomaticInserts="true"> <ClientSettings Selecting-AllowRowSelect="true"></ClientSettings> <MasterTableView AutoGenerateColumns="false" EditMode="InPlace" AllowAutomaticInserts="True" AllowAutomaticUpdates="true" AllowAutomaticDeletes="true" CommandItemDisplay="Bottom"> <Columns> <telerik:GridBoundColumn HeaderText="Facility Id" DataField="Site_Code"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Facility Description" DataField="Site_Description"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="TimeZone Offset" DataField="Time_Zone_Offset"></telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> </td> </tr> <tr> <td> <asp:Button ID="btnAdd" runat="server" Text="Add" Width="108px" CausesValidation="false" CssClass="StandardButton" OnClick="btnAdd_Click" CommandName="Add"/> </td> <td> <asp:Button ID="btnDelete" runat="server" Text="Delete" Width="108px" CausesValidation="false" CssClass="StandardButton" OnClick="btnDelete_Click"/> </td> <td> <asp:Button ID="btnModify" runat="server" Text="Modify" Width="108px" CausesValidation="false" CssClass="StandardButton" OnClick="btnModify_Click"/> </td> <td> <asp:Button ID="btnClose" runat="server" Text="Close" Width="108px" CausesValidation="false" CssClass="StandardButton" OnClick="btnClose_Click"/> </td> </tr> </table> </telerik:RadAjaxPanel> </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 System.Data;using Telerik.Web.UI;using System.Text;using TechAssist.Data;public partial class ManageSites : System.Web.UI.Page{ string userId; DataTable dtSites; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { userId = TechAssist.eSOMS.SharedCommon.CommonUtil.GetUserID(); dtSites = GetMultiSites().Tables[0]; // returns Datatable as source ViewState["dtSites"] = dtSites; // storing it in Viewstate rgManageSites.DataSource = dtSites; } else { //rgManageSites.DataSource = ViewState["dtSites"]; } rgManageSites.ItemCreated += new GridItemEventHandler(rgManageSites_ItemCreated); rgManageSites.ItemCommand += new GridCommandEventHandler(rgManageSites_ItemCommand); } void rgManageSites_ItemCommand(object sender, GridCommandEventArgs e) { switch (e.CommandName) { case "Add": { if ((e.Item is GridDataInsertItem) && e.Item.IsInEditMode) { //e.Item.Cells[2].Text -- returns } rgManageSites.Rebind(); break; } } } void rgManageSites_ItemCreated(object sender, GridItemEventArgs e) { if ((e.Item is GridDataInsertItem) && e.Item.IsInEditMode) { //init insert operation triggered } else if ((e.Item is GridEditableItem) && e.Item.IsInEditMode) { //edit operation triggered } } protected void btnClose_Click(object sender, EventArgs e) { } protected void btnModify_Click(object sender, EventArgs e) { } protected void btnDelete_Click(object sender, EventArgs e) { } protected void btnAdd_Click(object sender, EventArgs e) { rgManageSites.MasterTableView.IsItemInserted = true; if (btnAdd.Text == "Add") { rgManageSites.DataSource = ViewState["dtSites"]; rgManageSites.MasterTableView.InsertItem();// = true; btnAdd.Text = "Apply Add"; } else if (btnAdd.Text == "Apply Add") { btnAdd.Text = "Add"; GridEditableItem insertedItem = rgManageSites.MasterTableView.GetInsertItem(); insertedItem.FireCommandEvent("Add", String.Empty); } } private DataSet GetMultiSites() { StringBuilder sb = new StringBuilder("select US.SITE_CODE,S.SITE_Description,S.Time_Zone_Offset from user_sites US, Sites S "); sb.Append("where US.SITE_CODE = S.SITE_CODE and user_id = '"); sb.Append(userId); sb.Append("'"); TechAssist.Data.Database db = new Database(); TechAssist.Data.DataAdapter da = new TechAssist.Data.DataAdapter(sb.ToString()); DataSet dsSites = new DataSet(); try { da.Fill(dsSites, "Sites"); } catch (System.Exception ex) { TechAssist.eSOMS.SharedCommon.CommonUtil.SetErrorPopup( Page.FindControl("txtErrorMessage"), ex); } return dsSites; }}Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);function initializeRequestHandler(sender, args) { if (args.get_postBackElement().id.indexOf("ExportPDFButton") != -1) { args.set_cancel(true); sender._form["__EVENTTARGET"].value = args.get_postBackElement().id.replace(/\_/g, "$"); sender._form["__EVENTARGUMENT"].value = ""; sender._form.submit(); return; } if (args.get_postBackElement().id.indexOf("ExportExcelButton") != -1) { args.set_cancel(true); sender._form["__EVENTTARGET"].value = args.get_postBackElement().id.replace(/\_/g, "$"); sender._form["__EVENTARGUMENT"].value = ""; sender._form.submit(); return; }var value = combo.get_selectedItem().get_attributes().getAttribute('MyAttribute');Hi,
I was provided with source code of VS project that uses Telerik controls. It's a WebSite and has dll's in Bin folder.
Telerik controls version is 2010.2.826.40.
There is no Telerik.Web.Design.dll file in the project folders, but it's referenced in web.config file. I haven’t installed any Telerik package before, neither now because i have only project files.
Is there any way to proper see controls in VS 2010 editor and not getting error "Failed to create designer" without having file Telerik.Web.Design.dll? I've tried solutions from the forum and errors with references/sourcecode disappeared. However design view in VS 2010 is still not working.