Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
130 views

I need a way of reset all entries from AutoCompleteBox including:

1) Remove all entries from the entries array; and

2) Remove all tokens from text box

I need to do this programmatically in server side code.

 

Thanks!

Peter Milchev
Telerik team
 answered on 03 Jul 2020
2 answers
105 views

Not lucky getting RadGrid populated. I have a RadAutoCompleteBox where user can a code used as parameter of a stored procedure and the result should populate the grid in three columns. I tried to made it as simpler as possible but my grid is not showing up anything. 

My code ASPX:

<form id="form1" runat="server">
    <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
     
    <telerik:RadAjaxManager ID="ajaxmanager1" runat="server" EnableAJAX="true">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadAutoCompleteBox1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadAutoCompleteBox1" LoadingPanelID="radloadingpanel1" />
                    <telerik:AjaxUpdatedControl ControlID="lblOEValue" LoadingPanelID="radloadingpanel1" />
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="radloadingpanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnSearch">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadAutoCompleteBox1" LoadingPanelID="radloadingpanel1" />
                    <telerik:AjaxUpdatedControl ControlID="lblOEValue" LoadingPanelID="radloadingpanel1" />
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="radloadingpanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
     
    <telerik:RadAjaxLoadingPanel ID="radloadingpanel1" runat="server" AnimationDuration="0" InitialDelayTime="1000">
    </telerik:RadAjaxLoadingPanel>
     
    <telerik:RadAutoCompleteBox runat="server" ID="RadAutoCompleteBox1" ClientID="RadAutoCompleteBox1" >
        <!-- I supressed details because auto complete box is working fine -->
    </telerik:RadAutoCompleteBox>
     
    <telerik:RadGrid ID="RadGrid1" runat="server" autopostback="true">
        <MasterTableView AutoGenerateColumns="true">
            <Columns>
                <telerik:GridBoundColumn DataField="Description" UniqueName="Description">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="ConditionsAndOptions" UniqueName="ConditionsAndOptions">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="RetailPrice" UniqueName="RetailPrice">
                </telerik:GridBoundColumn>
            </Columns>
        </MasterTableView>
    </telerik:RadGrid>
     
    <asp:Button id="btnSearch" Text="Search" OnClick="btnSearch_Click" autopostback="true" runat="server"/><br />
     
    <div style="display:none">
        <asp:label ClientID="lblOEValue" id="lblOEValue" ClientIDMode="Static" autopostback="true" visible="true" runat="server" ></asp:label>
    </div>
</form>

 

My VB code:

Protected Sub RadAutoCompleteBox1_EntryAdded(sender As Object, e As Telerik.Web.UI.AutoCompleteEntryEventArgs)
    lblOEValue.Text = e.Entry.Text
End Sub
 
Protected Sub RadAutoCompleteBox1_EntryRemoved(sender As Object, e As Telerik.Web.UI.AutoCompleteEntryEventArgs)
    lblOEValue.Text = ""
End Sub
 
Protected Sub btnSearch_Click(sender As Object, e As EventArgs)
     Dim myConn As SqlConnection = New SqlConnection(ConfigurationManager.AppSettings("myconnection"))
    
Dim adapter As SqlDataAdapter = New SqlDataAdapter
    Dim myDataTable As New DataTable
    adapter.SelectCommand = New SqlCommand("EXEC [dbo].[] '" + lblOEValue.Text + "'", myConn)
    myConn.Open()
    adapter.Fill(myDataTable)
    RadGrid1.DataSource = myDataTable

    myConn.Close()

End Sub

 

What am I missing here?

Doncho
Telerik team
 answered on 03 Jul 2020
6 answers
1.7K+ views

Hi,

We've downloaded the latest version of the Telerik libraries - 2017.2.711.45 - and when we drop them into our web application we get the error

Error occurred during a cryptographic operation

with the stack trace pasted at the end of this message in our log files.

The error itself is pretty generic and suggested fixes include clearing the browser cache or tokens from the UserTokenCaches table. However, none of these solutions is working for us, so we've had to do a bit more digging.

What we've discovered is that this error is occuring on any page that uses the RadAsyncUpload control (we're not sure that it's only this control but other Telerik controls seem to be fine). It only happens with the 2017.2.711.45 libraries - if we copy back in the 2017.2.503.45 libraries our web application works again as normal.

We've tried recreating the problem in a simple web application but we can't and our real web application is far too complex to whittle down to demonstrable size.

Any help would be appreciated.

Stephen.

 

 

2017-09-01 15:49:08,552 [33] [Admin] [pftilg0judh5r3uukzo3cyew] [(null)] ERROR UI.Web.Global - Application_Error : Unhandled exception.
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
   at System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input)
   at System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.Protect(Byte[] clearData)
   at System.Web.Security.MachineKey.Protect(ICryptoServiceProvider cryptoServiceProvider, Byte[] userData, String[] purposes)
   at System.Web.Security.MachineKey.Protect(Byte[] userData, String[] purposes)
   at Telerik.Web.UI.CryptoService.EncryptWithMachineKey(String clearText)
   at Telerik.Web.UI.CryptoService.Encrypt(String plainString)
   at Telerik.Web.UI.RadAsyncUpload.DescribeComponent(IScriptDescriptor descriptor)
   at Telerik.Web.UI.RadWebControl.Telerik.Web.IControl.DescribeComponent(IScriptDescriptor descriptor)
   at Telerik.Web.UI.ScriptRegistrar.GetScriptDescriptors(Control control)
   at Telerik.Web.UI.RadWebControl.GetScriptDescriptors()
   at Telerik.Web.UI.RadWebControl.System.Web.UI.IScriptControl.GetScriptDescriptors()
   at System.Web.UI.ScriptControlManager.RegisterScriptDescriptors(IScriptControl scriptControl)
   at Telerik.Web.UI.RadWebControl.RegisterScriptDescriptors()
   at Telerik.Web.UI.RadWebControl.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.Control.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.Control.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.Control.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.UpdatePanel.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.UpdatePanel.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.PageRequestManager.RenderFormCallback(HtmlTextWriter writer, Control containerControl)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
   at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.HtmlFormWrapper.System.Web.UI.IHtmlForm.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.PageRequestManager.RenderPageCallback(HtmlTextWriter writer, Control pageControl)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.Page.Render(HtmlTextWriter writer)
   at System.Web.UI.Adapters.ControlAdapter.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter writer, Control page)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.Page.Render(HtmlTextWriter writer)
   at System.Web.UI.Adapters.ControlAdapter.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.members_framework_frameworklisting_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\82ed21aa\e4b970d2\App_Web_mg1k0qrw.1.cs:line 0
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

 

Peter Milchev
Telerik team
 answered on 03 Jul 2020
4 answers
171 views

I know there have been previous similar old threads to this but I still keep getting this error message

Doesn't come up all the time but stops the project from building and therefore you cant run it

it always refers to the same sub on multiple pages

 

Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As Web.UI.AjaxRequestEventArgs)

various lines of code....

End Sub

 

And on the pages in question, in page load I have the following:

 

Dim manager As RadAjaxManager = RadAjaxManager.GetCurrent(Page)
AddHandler manager.AjaxRequest, AddressOf RadAjaxManager1_AjaxRequest

The project is running the latest extensions (2020.2.617) and i have been through the upgrade wizard

ANY HELP?

 

really starting to be a pain in the back side!

 

Jon
Top achievements
Rank 2
Veteran
 answered on 03 Jul 2020
1 answer
438 views

I have a RadGrid I'm exporting to excel but for cells with zeros it's not formating cell for Decimal with two places. I'm using the below to set the cell text and it works fine for Cell values other than Zero.

cell.Text = decValue.ToString("n2") 

     

Doncho
Telerik team
 answered on 02 Jul 2020
2 answers
49 views

Hi!

I want to swap a RadGridView with a RadListView Control.

One issue I have at them moment is applying a filter to the RadListView.

Before (with RadGrid) I used:

Dim filterExpression As String
            filterExpression = "(ProductID = " & drp_Products.SelectedValue.ToString & ")"
            RadGrid_Search.MasterTableView.FilterExpression = filterExpression
            RadGrid_Search.MasterTableView.Rebind()

How can I do the same thing with RadListVIew?

Thanks, Tom

Thomas
Top achievements
Rank 1
Veteran
 answered on 02 Jul 2020
2 answers
68 views

Hi!

I have a tiny rotating animation (GIF) to tell my users to wait while data is being retrieved, so I need to show or hide it depending on the situation.

I would like to know if there is an appropriated Telerik container that I could use to put my GIF inside and control its visibility from code behind I tried to use a regular DIV but it is not showing/hiding accordingly.

Thanks!

Yan Moura
Top achievements
Rank 1
Veteran
Iron
 answered on 02 Jul 2020
9 answers
2.2K+ views
I am getting the following error: "There was a problem extracting DataKeyValues from the DataSource. Please ensure that DataKeyNames are specified correctly and all fields specified exist in the DataSource."

I can bind a dataset to my grid and that displays properly.  I have a master table with one detail table.  When I try to put one of the master table rows in edit via clicking on an edit icon in the row and displaying the details in an edit form template, that's when the exception is thrown.

As you will see the Mastertable datakeynames is CourseId which maps to the element name of the dataset.  Similarly the datakeynames is ChildCourseId for the GridTableView which also maps to the corresponding dataset.

I have looked at the documentation provided by Telerik and I believe I have coded the page correctly, but I am obviously missing something.  Any insight/suggestions would be greatly appreciated.

Below are snippets from the aspx page, followed by the code behind and the methods used to build the dataset that is bound to the grid.

Thanks,
Dan

ASPX page:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Templates/PortalBase.Master" CodeBehind="master_course_list.aspx.vb" Inherits="uo.FacultyPortal.web.course_filter" %>
<%@ Register Src="~/code/ucMessage.ascx" TagName="Message"    TagPrefix="uc" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="WorkPane" runat="server">
               <telerik:RadGrid ID="rgCourseInventoryList" runat="server" CssClass="RadGrid" GridLines="None" AllowPaging="True" PageSize="10"
                AllowSorting="True" AutoGenerateColumns="False" ShowStatusBar="true" OnDetailTableDataBind="rgCourseInventoryList_DetailTableDataBind"
                OnNeedDataSource="rgCourseInventoryList_NeedDataSource">
                <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="CourseId" AutoGenerateColumns="false" HierarchyLoadMode="ServerBind"
                HierarchyDefaultExpanded="true" ClientDataKeyNames="CourseId">
                <CommandItemSettings AddNewRecordText="<%$ Resources:ui_messages, msgAddNewRecord %>" AddNewRecordImageUrl="../config/Images/Icons/addrecord.gif" RefreshText=""/>
                <CommandItemTemplate>
                  <asp:ImageButton runat="server" ImageUrl="../config/Images/Icons/addrecord.gif" OnClientClick="return ShowInsertForm();" ID="ibInsertForm" ToolTip="<%$ Resources:ui_labels, ibShowDeleteForm %>"/>
                </CommandItemTemplate>
 
                <Columns>
                    <telerik:GridEditCommandColumn EditImageUrl="../config/Images/Icons/edit.png"  ButtonType="ImageButton" ItemStyle-Width="10px" EditText="<%$ Resources:ui_labels, ibEditCourse %>">
                    </telerik:GridEditCommandColumn>
                    <telerik:GridTemplateColumn UniqueName="gtcShowDelete" ItemStyle-Width="10px">
                        <ItemTemplate>
                        <asp:ImageButton runat="server" ImageUrl="../config/Images/Icons/delete.png" ID="ibShowDeleteForm" ToolTip="<%$ Resources:ui_labels, ibShowDeleteForm %>"/>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn UniqueName="CourseCode" HeaderText="<%$Resources:ui_labels, gbcCourseCode %>" DataField="SISCourseCode">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="CourseTitle" DataField="SISCourseTitle" Visible="false">
                    </telerik:GridBoundColumn>
                    <telerik:GridTemplateColumn UniqueName="gtcTitle" HeaderText="<%$ Resources:ui_labels, gtcTitle %>" ItemStyle-VerticalAlign="Middle">
                        <ItemTemplate>
                            <asp:Image ID="imgParent" runat="server" Visible="false" />
                            <asp:Label ID="lblParentTitle" runat="server"></asp:Label>
                            <asp:Label ID="lblCourseTitle" runat="server"></asp:Label>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn UniqueName="CourseNote" HeaderText="<%$Resources:ui_labels, gbcNote %>" DataField="SISCourseNotes">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="CourseExpired" DataField="SISCourseExpired" Visible="false">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="ParentId" DataField="ParentId" Visible="false">
                    </telerik:GridBoundColumn>
                </Columns>
                <EditFormSettings EditFormType="Template">
                    <FormTableItemStyle width="100%"></FormTableItemStyle>
                    <FormTableStyle GridLines="None" CellSpacing="0" CellPadding="2"></FormTableStyle>
                    <FormStyle Width="100%" backColor="white"></FormStyle>
                    <FormTemplate>
                        <asp:Table ID="tblCourseDetails" CellSpacing="2" CellPadding="1" runat="server" BorderWidth="1" Width="100%">
                            <asp:TableRow runat="server" ID="trInternal">
                            <asp:TableCell runat="server" ID="tcInternal">
                            <asp:Table ID="tblInternal" runat="server">
                            <asp:TableRow ID="trMessageArea" runat="server">
 
                                <asp:TableCell ID="tcMessageArea" runat="server" colspan="2">
                                    <uc:Message ID="msgMessageArea" runat="server" />
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="trCourseCode">
                                 <asp:TableCell runat="server" ID="tcCourseCode">
                                    <asp:Label runat="server" ID="lblCourseCode" Text="<%$ Resources:ui_labels, lblCourseCode %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tcActivityCode2" HorizontalAlign="Left">
                                    <asp:TextBox runat="server" ID="txtSISCourseCode"></asp:TextBox
                                    <asp:Label runat="server" ID="lblCourseCodeMandatory" Text="<%$ Resources:ui_labels, lblMandatoryFlag %>" CssClass="Mandatory"></asp:Label>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr1">
                                 <asp:TableCell runat="server" ID="tc1">
                                    <asp:Label runat="server" ID="lblCourseCategory" Text="<%$ Resources:ui_labels, lblCourseCategory %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc2" HorizontalAlign="Left">
                                    <telerik:RadComboBox runat="server" ID="rcbCourseCategory" ></telerik:RadComboBox
                                    <asp:Label runat="server" ID="lblCourseCategoryMandatory" Text="<%$ Resources:ui_labels, lblMandatoryFlag %>" CssClass="Mandatory"></asp:Label>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr2">
                                <asp:TableCell runat="server" ID="tc3">
                                    <asp:Label runat="server" ID="lblCourseType" Text="<%$ Resources:ui_labels, lblCourseType %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc4" HorizontalAlign="Left">
                                    <telerik:RadComboBox runat="server" ID="rcbCourseType" ></telerik:RadComboBox
                                    <asp:Label runat="server" ID="lblCourseTypeMandatory" Text="<%$ Resources:ui_labels, lblMandatoryFlag %>" CssClass="Mandatory"></asp:Label>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr3">
                                <asp:TableCell runat="server" ID="tc5">
                                    <asp:Label runat="server" ID="lblLanguage" Text="<%$ Resources:ui_labels, lblLanguage %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc6" HorizontalAlign="Left">
                                    <telerik:RadComboBox runat="server" ID="rcbLanguage" ></telerik:RadComboBox
                                    <asp:Label runat="server" ID="lblLanguageMandatory" Text="<%$ Resources:ui_labels, lblMandatoryFlag %>" CssClass="Mandatory"></asp:Label>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr4">
                                <asp:TableCell runat="server" ID="tc7">
                                    <asp:Label runat="server" ID="lblAcademicUnit" Text="<%$ Resources:ui_labels, lblAcademicUnit %>"></asp:Label>
                                </asp:TableCell>   
                                <asp:TableCell runat="server" ID="tc8" HorizontalAlign="Left">
                                    <telerik:RadComboBox runat="server" ID="rcbAcademicUnit" MarkFirstMatch="true" ></telerik:RadComboBox
                                    <asp:Label runat="server" ID="lblAcademicUnitMandatory" Text="<%$ Resources:ui_labels, lblMandatoryFlag %>" CssClass="Mandatory"></asp:Label>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr5">
                                <asp:TableCell runat="server" ID="tc9">
                                    <asp:Label runat="server" ID="lblNumberOfSessions" Text="<%$ Resources:ui_labels, lblNumberOfSessions %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc10" HorizontalAlign="Left">
                                <asp:TextBox runat="server" ID="txtNumberOfSessions"></asp:TextBox>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr6">
                                <asp:TableCell runat="server" ID="tc11">
                                    <asp:Label runat="server" ID="lblNote" Text="<%$ Resources:ui_labels, lblNote %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc12" HorizontalAlign="Left">
                                <asp:TextBox runat="server" ID="txtNote" Wrap="true" TextMode="MultiLine" Rows="4" Columns="40"></asp:TextBox>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="trCrossListCourse">
                                <asp:TableCell runat="server" ID="tc13">
                                    <asp:Label runat="server" ID="lblCrossListCourseId" Text="<%$ Resources:ui_labels, lblCrossListCourseId %>"></asp:Label>
                                </asp:TableCell>
                                <asp:TableCell runat="server" ID="tc14" HorizontalAlign="Left">
                                <asp:TextBox runat="server" ID="txtCrossListCourseCode"></asp:TextBox>
                                </asp:TableCell>
                            </asp:TableRow>
                            <asp:TableRow runat="server" ID="tr8">
                                <asp:TableCell runat="server" id="tc15" HorizontalAlign="Left" ColumnSpan="2">
                                    <asp:Button runat="server" ID="btnUpdate"
                                    Text="<%# IIf((TypeOf(Container) is GridEditFormInsertItem),  Resources.ui_labels.btnAdd.ToString(), Resources.ui_labels.btnUpdate.ToString()) %>"
                                    CommandName='<%# IIf((TypeOf(Container) is GridEditFormInsertItem),  "PerformInsert", "Update") %>' /> 
                                    <asp:Button runat="server" ID="btnCancel" CausesValidation="false" CommandName="Cancel" Text="<%$ Resources:ui_labels, btnCancel %>" />
                                </asp:TableCell>
                            </asp:TableRow>
                            </asp:Table>
                            </asp:TableCell>
                            </asp:TableRow>
                        </asp:Table>
                    </FormTemplate>
                </EditFormSettings>
                <DetailTables>
                    <telerik:GridTableView runat="server" DataKeyNames="ChildCourseId" Name="CrossListView" ClientDataKeyNames="ChildCourseId">
                        <Columns>
                            <telerik:GridButtonColumn ImageUrl="~/config/Images/Icons/lnk_del.png" CommandName="Delete" Text="<%$ Resources:ui_messages, msgDeleteLink %>"
                            UniqueName="gbDeleteLink" ButtonType="ImageButton" ItemStyle-Width="10px" ConfirmText="<%$ Resources:ui_messages, msgConfirmDelete %>" ConfirmDialogType="Classic">
                            </telerik:GridButtonColumn>
                            <telerik:GridTemplateColumn UniqueName="gtcShowDelete" ItemStyle-Width="10px">
                                <ItemTemplate>
                                    <asp:Image runat="server" ImageUrl="~/config/Images/Icons/lnk_chld.png"/>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridBoundColumn UniqueName="SISCourseCode" DataField="SISCourseCode">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn UniqueName="SISCourseTitle" DataField="SISCourseTitle">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn UniqueName="SISCourseExpired" DataField="SISCourseExpired" Visible="false">
                            </telerik:GridBoundColumn>
                        </Columns>
                    </telerik:GridTableView>
                </DetailTables>
                </MasterTableView>
                <ClientSettings>
                    <Selecting AllowRowSelect="true"></Selecting>
                    <ClientEvents OnRowDblClick="RowDblClickEdit"></ClientEvents>
                </ClientSettings>
            </telerik:RadGrid>

Code behind....

Imports Telerik.Web.UI
Imports uo.FacultyPortal.CourseOffer
Imports uo.FacultyPortal.Admin
Imports uo.FacultyPortal.Common
Imports uo.FacultyPortal.Common.Constants
 
Partial Class course_filter
    Inherits CultureManager
    Private cacheManager As New CacheManager
    Private admin As CD_Tables = New CD_Tables
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 
        If Not Page.IsPostBack Then
 
            bindRadComboBox(rcbAcademicUnit, "CD_Academic_Unit")
            bindRadComboBox(rcbCourseCategory, "CD_Course_Categories")
 
        End If
    End Sub
 
    ''' <summary>
    ''' Return a lst of courses to the user based on their selected criteria
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
 
        msgMessageArea.FlushMessages()
 
        If rcbAcademicUnit.SelectedIndex <= 0 Then
            msgMessageArea.AddMessage(Resources.ui_labels.lblAcademicUnit.ToString + Resources.ui_messages.errRequiredField.ToString,
                         Constants.uoMessageType.ErrorType)
        Else
            rgCourseInventoryList.Rebind()
            rgCourseInventoryList.CurrentPageIndex = 0
 
        End If
 
    End Sub
 
    Protected Sub rgCourseInventoryList_DetailTableDataBind(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridDetailTableDataBindEventArgs) Handles rgCourseInventoryList.DetailTableDataBind
        Dim oCourses As New Course
        Dim oCourseInventory As New DataTable
        Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem)
        If parentItem.Edit Then
            Return
        End If
        If e.DetailTableView.Name = "CrossListView" Then
            Dim courseId As Integer = CInt(parentItem.GetDataKeyValue("CourseId"))
            oCourseInventory = oCourses.getCrossListedCourses(courseId, IIf(cbShowDeleted.Checked, "Y", "N"))
            e.DetailTableView.DataSource = oCourseInventory
 
        End If
 
    End Sub
    ''' <summary>
    ''' Get the data for the grid
    ''' </summary>
    ''' <param name="source"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub rgCourseInventoryList_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles rgCourseInventoryList.NeedDataSource
        Dim oCourses As New Course
        Dim oCourseInventory As New DataTable
 
        '        Dim a As Integer = rgCourseInventoryList.CurrentPageIndex
        If Not e.IsFromDetailTable Then 'andalso e.RebindReason <> GridRebindReason.InitialLoad Then
            If e.RebindReason <> GridRebindReason.InitialLoad Then
                oCourseInventory = oCourses.getCourseInventory(rcbAcademicUnit.SelectedValue, rcbCourseCategory.SelectedValue, IIf(cbShowDeleted.Checked, "Y", "N"))
                rgCourseInventoryList.DataSource = oCourseInventory
 
            End If
 
        End If
 
    End Sub
    ''' <summary>
    ''' If course is no longer offered then overstrike the course code and remove the delete icon
    ''' </summary>
    ''' <param name="source"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub rgCourseInventory_ItemDataBound(ByVal source As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles rgCourseInventoryList.ItemDataBound
        Dim dataItem As GridDataItem
        Dim headerItem As GridHeaderItem
 
        If TypeOf (e.Item) Is GridDataItem AndAlso e.Item.OwnerTableView.Name = "CrossListView" Then
            dataItem = CType(e.Item, GridDataItem)
            If dataItem("SISCourseExpired").Text <> " " Then
                CType(dataItem("gbDeleteLink").Controls(0), ImageButton).Visible = False
                dataItem("SISCourseCode").Font.Strikeout = True
 
            End If
 
            e.Item.OwnerTableView.ShowHeader = False
        End If
 
        If TypeOf (e.Item) Is GridDataItem AndAlso e.Item.OwnerTableView.NamingContainer.ID = "rgCourseInventoryList" Then
            dataItem = CType(e.Item, GridDataItem)
            If dataItem("CourseExpired").Text <> " " Then
                CType(e.Item.FindControl("ibShowDeleteForm"), ImageButton).Visible = False
                dataItem("CourseCode").Font.Strikeout = True
 
            End If
            Dim a As String = e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("CourseId")
            If dataItem("ParentId").Text <> " " Then
                CType(e.Item.FindControl("ibShowDeleteForm"), ImageButton).Visible = False
                CType(dataItem.FindControl("imgParent"), Image).ImageUrl = "../Images/Icons/lnk.png"
                CType(dataItem.FindControl("imgParent"), Image).Visible = True
 
                If dataItem("CourseExpired").Text <> " " Then
                    CType(dataItem.FindControl("lblParentTitle"), Label).Text = "(" + dataItem("ParentId").Text + ")"
                    CType(dataItem.FindControl("lblParentTitle"), Label).Font.Strikeout = True
                    CType(dataItem.FindControl("lblCourseTitle"), Label).Text = "<br>" + dataItem("CourseTitle").Text
                Else
                    CType(dataItem.FindControl("lblCourseTitle"), Label).Text = "(" + dataItem("ParentId").Text + ")" + "<br>" + dataItem("CourseTitle").Text
                End If
            Else
                CType(dataItem.FindControl("lblCourseTitle"), Label).Text = dataItem("CourseTitle").Text
            End If
        ElseIf TypeOf (e.Item) Is GridHeaderItem Then
            headerItem = CType(e.Item, GridHeaderItem)
            '            headerItem
        End If
 
    End Sub
    ''' <summary>
    ''' Take action depending on what type of item it is.
    ''' </summary>
    ''' <param name="source"></param>)
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub rgCourseInventory_ItemCreated(ByVal source As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles rgCourseInventoryList.ItemCreated
        Dim courseId As String
        Dim rcb As New RadComboBox
        Dim oCourses As New Course
 
        If TypeOf e.Item Is GridEditFormItem And e.Item.IsInEditMode Then
 
            bindRadComboBox(CType(e.Item.FindControl("rcbCourseCategory"), RadComboBox), "CD_Course_Categories")
            bindRadComboBox(CType(e.Item.FindControl("rcbCourseType"), RadComboBox), "CD_Course_Types")
            bindRadComboBox(CType(e.Item.FindControl("rcbLanguage"), RadComboBox), "CD_Course_Languages")
            bindRadComboBox(CType(e.Item.FindControl("rcbAcademicUnit"), RadComboBox), "CD_Academic_Unit")
 
            ' Are we editing an existing row?
            If e.Item.ItemIndex >= 0 Then
                ' Then get the course details from the DB and bind the values to the list boxes.
                courseId = e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("CourseId")
                oCourses.getCourseDetails(courseId)
                ' Hide the course code if we're editing.  Only see it on a create.
                CType(e.Item.FindControl("trCourseCode"), TableRow).Visible = False
                CType(e.Item.FindControl("txtSISCourseCode"), TextBox).Text = oCourses.SISCourseCode
                CType(e.Item.FindControl("rcbCourseCategory"), RadComboBox).SelectedValue = oCourses.CourseCategoryId
                CType(e.Item.FindControl("rcbCourseType"), RadComboBox).SelectedValue = oCourses.CourseTypeId
                CType(e.Item.FindControl("rcbLanguage"), RadComboBox).SelectedValue = oCourses.CourseLanguageId
                CType(e.Item.FindControl("rcbAcademicUnit"), RadComboBox).SelectedValue = oCourses.AcademicUnitId
                CType(e.Item.FindControl("txtNumberOfSessions"), TextBox).Text = oCourses.NumberOfSessions
                CType(e.Item.FindControl("txtNote"), TextBox).Text = oCourses.Note
                If Not oCourses.CrossListCourseCode Is Nothing Then
                    CType(e.Item.FindControl("trCrossListCourse"), TableRow).Visible = False
                End If
            End If
 
        ElseIf TypeOf e.Item Is GridDataItem Then
            If e.Item.OwnerTableView.NamingContainer.ID = "rgCourseInventoryList" Then
                Dim clr As String = e.Item.Style("backgroundColor")
                e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='lightsteelblue';this.style.cursor='hand';")
                e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='" & clr & "';this.style.cursor='';")
 
                Dim deleteForm As ImageButton = DirectCast(e.Item.FindControl("ibShowDeleteForm"), ImageButton)
                deleteForm.Attributes("onclick") = [String].Format("return ShowDeleteForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("CourseId"), e.Item.ItemIndex)
            ElseIf e.Item.OwnerTableView.Name = "CrossListView" Then
                Dim clr As String = e.Item.Style("backgroundColor")
                e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='#cc99ff';this.style.cursor='hand';")
                e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='" & clr & "';this.style.cursor='';")
            End If
        End If
 
        If TypeOf e.Item Is GridDataItem Then
        End If
 
    End Sub
    ''' <summary>
    ''' Hide the empty rows in child gridview
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub rgCourseInventoryList_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles rgCourseInventoryList.PreRender
        HideExpandColumnRecursive(rgCourseInventoryList.MasterTableView)
    End Sub
 
    ''' <summary>
    ''' Recursively loop through grid looking for empty chidren and suppress the "No records found message" and the row.
    ''' </summary>
    ''' <param name="tableView"></param>
    ''' <remarks></remarks>
    Private Sub HideExpandColumnRecursive(ByVal tableView As GridTableView)
        Dim nestedViewItems As GridItem() = tableView.GetItems(GridItemType.NestedView)
        For Each nestedViewItem As GridNestedViewItem In nestedViewItems
            For Each nestedView As GridTableView In nestedViewItem.NestedTableViews
                If nestedView.Items.Count = 0 Then
                    Dim cell As TableCell = nestedView.ParentItem("ExpandColumn")
                    cell.Controls(0).Visible = False
                    nestedViewItem.Visible = False
                End If
                If nestedView.HasDetailTables Then
                    HideExpandColumnRecursive(nestedView)
                End If
            Next
        Next
    End Sub
End Class

...and the class to build the dataset...

Option Strict On
 
Imports System.Data
Imports uo.Data
Imports log4net
Imports uo.FacultyPortal
Imports uo.FacultyPortal.Common
Imports System.Globalization
Imports System.Threading.Thread
Imports System.Text
 
Public Class Course
 
    Public Function getCrossListedCourses(ByVal iCourseId As Integer, ByVal iShowDeleted As String) As DataTable
        Dim oCourseCrossList As DataSet
        Dim oGetCourseSchedule As XmlCallWrapper
 
        Try
 
            oGetCourseSchedule = XmlDatabase.CreateCallWrapper("FACULTYPORTAL", "PKG_COURSES.GET_CROSS_LISTED_COURSES_PRC")
            oGetCourseSchedule("PN_COURSE_ID") = iCourseId
            ' TODO need to get language id
            oGetCourseSchedule("PV_SHOW_EXPIRED") = iShowDeleted
            oGetCourseSchedule("PN_INTERFACE_LANG_ID") = 1
            oGetCourseSchedule.Execute()
 
            oCourseCrossList = oGetCourseSchedule.GetDataSet
            oCourseCrossList.Tables("PC_RESULT").Columns(0).ColumnName = "ChildCourseId"
            oCourseCrossList.Tables("PC_RESULT").Columns(1).ColumnName = "SISCourseCode"
            oCourseCrossList.Tables("PC_RESULT").Columns(2).ColumnName = "SISCourseTitle"
            oCourseCrossList.Tables("PC_RESULT").Columns(3).ColumnName = "SISCourseExpired"
 
        Catch ex As Exception
            ' log error
            _logger.Error(ex)
        Finally
 
        End Try
 
        Return oCourseCrossList.Tables("PC_RESULT")
 
    End Function
 
    Public Function getCourseInventory(ByVal iAcademicUnit As Integer, ByVal iCourseCategory As Integer, ByVal iShowDeleted As String) As DataTable
        Dim oCourseSchedule As DataSet
        Dim oGetCourseSchedule As XmlCallWrapper
 
        Try
 
            oGetCourseSchedule = XmlDatabase.CreateCallWrapper("FACULTYPORTAL", "PKG_COURSES.GET_COURSES_BY_UNIT_PRC")
            oGetCourseSchedule("PN_ACADEMIC_UNIT_ID") = iAcademicUnit
            oGetCourseSchedule("PN_COURSE_CATEGORY_ID") = IIf(iCourseCategory = 0, DBNull.Value, iCourseCategory)
            oGetCourseSchedule("PV_SHOW_EXPIRED") = iShowDeleted
            ' TODO - Need to pass in or get the language
            oGetCourseSchedule("PN_INTERFACE_LANG_ID") = 1
            oGetCourseSchedule.Execute()
 
            oCourseSchedule = oGetCourseSchedule.GetDataSet
            oCourseSchedule.Tables("PC_RESULT").Columns(0).ColumnName = "CourseId"
            oCourseSchedule.Tables("PC_RESULT").Columns(1).ColumnName = "SISCourseCode"
            oCourseSchedule.Tables("PC_RESULT").Columns(2).ColumnName = "SISCourseTitle"
            oCourseSchedule.Tables("PC_RESULT").Columns(3).ColumnName = "SISCourseNotes"
            oCourseSchedule.Tables("PC_RESULT").Columns(4).ColumnName = "SISCourseExpired"
            oCourseSchedule.Tables("PC_RESULT").Columns(5).ColumnName = "ParentId"
 
        Catch ex As Exception
            ' log error
            _logger.Error(ex)
        Finally
 
        End Try
 
        Return oCourseSchedule.Tables("PC_RESULT")
    End Function
    Public Sub getCourseDetails(ByVal iCourseId As Integer)
        Dim oCourseDetails As DataSet
        Dim oGetCourseDetails As XmlCallWrapper
 
        Try
            oGetCourseDetails = XmlDatabase.CreateCallWrapper("FACULTYPORTAL", "PKG_COURSES.GET_COURSE_DETAILS_PRC")
            oGetCourseDetails("PN_COURSE_ID") = iCourseId
            oGetCourseDetails.Execute()
            oCourseDetails = oGetCourseDetails.GetDataSet
            CourseCategoryId = CInt(oCourseDetails.Tables("PC_RESULT")(0).Item("COURSE_CATEGORY_ID"))
            CourseTypeId = CInt(oCourseDetails.Tables("PC_RESULT")(0).Item("COURSE_TYPE_ID"))
            CourseLanguageId = CInt(oCourseDetails.Tables("PC_RESULT")(0).Item("LANGUAGE_ID"))
            SISCourseCode = oCourseDetails.Tables("PC_RESULT")(0).Item("SIS_ACAD_ACT_CD").ToString
            AcademicUnitId = CInt(oCourseDetails.Tables("PC_RESULT")(0).Item("UNIT_ID"))
            NumberOfSessions = oCourseDetails.Tables("PC_RESULT")(0).Item("REG_SESSION_COUNT").ToString
            Note = oCourseDetails.Tables("PC_RESULT")(0).Item("NOTE").ToString
            CrossListCourseCode = CStr(oCourseDetails.Tables("PC_RESULT")(0).Item("CROSS_LIST_COURSE_ID"))
        Catch ex As Exception
            ' log error
            _logger.Error(ex)
        Finally
 
        End Try
 
    End Sub
 
End Class
Jon
Top achievements
Rank 2
Veteran
 answered on 02 Jul 2020
3 answers
508 views

Am trying to change old PdfViewer with Telerik control

This built as the following :

1. main Page (Attachment.aspx) load -> usercontrol (TransactionArchiving.ascx) //TransactionArchiving to deal with business

2. usercontrol (TransactionArchiving.ascx) load -> usercontrol (InboundArchive.ascx) //InboundArchive to deal with business

3. usercontrol (InboundArchive.ascx) load -> usercontrol (Archiving.ascx)  //Archiving usercontrol should support different type of attachments and should dynamically load the attachment (PdfViewer ,TextArea, Templates, Word and .....) each type built into different usercontrol

 

On bellow HTML for Archiving usercontrol 

<asp:Repeater ID="archivedTabs" runat="server" OnItemDataBound="archivedTabs_ItemDataBound">
         <ItemTemplate>
             <div id='<%#this.ClientID + "_viewT" + Container.ItemIndex.ToString() %>' class="tabContainer noBorder">
 
                 <div class="col-sm-12 lntext-Hdr">
                 </div>
                 <asp:HiddenField ID="hdnUniqueId" runat="server" />
                 <asp:HiddenField ID="hdnIndex" runat="server" Value='<%#Container.ItemIndex.ToString()%>' />
                 <asp:PlaceHolder ID="dynamicControlsPlaceHolder" runat="server"></asp:PlaceHolder>
                 <div class="rowF noRowColor noBorder" style="text-align: center">
                     <div class="col8">
                         <asp:Button ID="saveBtn" OnClick="saveBtn_Click" OnClientClick="return true;" CssClass="btn btnGreen loadingData" runat="server" meta:resourcekey="saveBtn" />
                         <asp:Button ID="deleteBtn" CausesValidation="false" OnClick="deleteBtn_Click" OnClientClick="return true;" CssClass="btn btnGreen" runat="server" meta:resourcekey="deleteBtn" />
                         <asp:Button ID="sendBtn" CausesValidation="false" Visible="false" CssClass="btn btnGreen" runat="server" meta:resourcekey="sendBtn" />
                         <asp:Button runat="server" ID="eibtnBackToDirectorateTray" OnClick="eibtnBackToDirectorateTray_Click" Style="display: inline;" meta:resourcekey="eibtnBackToDirectorateTrayResource1" class="btn btnGreen" CausesValidation="false" />
                         <asp:Button runat="server" ID="eibtnBackToOutboundDraftTray" OnClick="eibtnBackToOutboundDraftTray_Click" Style="display: inline;" meta:resourcekey="eibtnBackToOutboundDraftTrayResource1" class="btn btnGreen" CausesValidation="false" />
                     </div>
                 </div>
             </div>
         </ItemTemplate>
     </asp:Repeater>

I think the issue cuz of repeater and PlaceHolder (dynamicControlsPlaceHolder)

This is the C# code for the same userControl

PlaceHolder dynamicControls = item.FindControl("dynamicControlsPlaceHolder") as PlaceHolder;
PDFViewer ucPDFViewer = LoadControl("~/VIP/UserControls/ArchivingPDF/PDFViewer.ascx") as PDFViewer;
    ucPDFViewer.ID = "archivingControl_" + hdnUniqueId;
    ucPDFViewer.IsFromDirectorate = this.IsFromDirectorate;
    ucPDFViewer.CallDelete += new EventHandler(DeleteFromViewer);
 
 
    if (this.IsForManifest)
    {
        ucPDFViewer.loadManifest(record);
    }
    else
    {
        ucPDFViewer.loadData(record);
    }
 
    dynamicControls.Controls.Add(ucPDFViewer);

 

On bellow PDFViewer.ascx code

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.js"></script>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<link href='<%# Page.ResolveUrl("~/UserControls/ArchivingPDF/css/styles.css") %>' rel="stylesheet" />
 
<%--<form id="form1" runat="server">--%>
    <%--    <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />--%>
    <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" />
    <script type="text/javascript">
        window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.worker.js';
 
        function pageLoad(app, args) {
            var upload = $find('<%= RadAsyncUpload1.ClientID %>');
            $(upload.get_element()).find("input[type='file']").attr("accept", ".docx, .rtf, .html, .txt, .xlsx, .csv");
        }
        function fileUploaded(sender, args) {
            $find('<%= RadAjaxManager1.ClientID %>').ajaxRequest();
        }
    </script>
 
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnablePageHeadUpdate="false">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadAsyncUpload1" />
                    <telerik:AjaxUpdatedControl ControlID="RadPdfViewer1" LoadingPanelID="RadAjaxLoadingPanel1" />
                    <telerik:AjaxUpdatedControl ControlID="RadLabel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
 
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
    </telerik:RadAjaxLoadingPanel>
 
    <div class="demo-container size-wide" runat="server">
        <telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server"
            OnClientFileUploaded="fileUploaded" OnFileUploaded="RadAsyncUpload1_FileUploaded"
            AllowedFileExtensions=".docx,.rtf,.html,.txt,.xlsx,.csv" HideFileInput="true"
            AutoAddFileInputs="false" Localization-Select="Upload And Convert" EnableInlineProgress="false"
            MultipleFileSelection="Disabled" />
        <telerik:RadLabel ID="RadLabel1" runat="server" Text="Displayed Document: <b>Document.pdf</b>"
            Style="float: left;">
        </telerik:RadLabel>
        <telerik:RadLabel ID="RadLabel2" runat="server" Text="Supported formats: <b>.docx / .rtf / .html / .txt / .xlsx / .csv</b>"
            Style="float: right;">
        </telerik:RadLabel>
        <br />
        <br />
        <br />
        <telerik:RadPdfViewer runat="server" ID="RadPdfViewer1" Height="600px" Width="100%" Scale="0.9">
            <%--<PdfjsProcessingSettings File='<%# Page.ResolveUrl("~/EmptyText.txt") %>'></PdfjsProcessingSettings>--%>
        </telerik:RadPdfViewer>
    </div>
<%--</form>--%>

 

PdfViewer C# code

protected void Page_Load(object sender, EventArgs e)
{
    int maxSize = 10 * 1024 * 1024; // 10MB
 
    RadAsyncUpload1.MaxFileSize = maxSize;
    RadPdfViewer1.MaxSerializerLength = maxSize;
 
    RadPdfViewer1.PdfjsProcessingSettings.File = Page.ResolveUrl("~/EmptyDoc.pdf");
}
protected void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
    byte[] renderedBytes = null;
    string extention = Path.GetExtension(e.File.FileName);
 
    // RadFlow Documents
    if (Regex.IsMatch(extention, ".docx|.rtf|.html|.txt"))
    {
        IFormatProvider<RadFlowDocument> provider = null;
        RadFlowDocument document = null;
 
        switch (extention)
        {
            case ".docx": provider = new DocxFormatProvider(); break;
            case ".rtf": provider = new RtfFormatProvider(); break;
            case ".html": provider = new HtmlFormatProvider(); break;
            case ".txt": provider = new TxtFormatProvider(); break;
            default: provider = null; break;
        }
 
        document = provider.Import(e.File.InputStream);
 
        Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
       Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
 
        using (MemoryStream ms = new MemoryStream())
        {
            pdfProvider.Export(document, ms);
            renderedBytes = ms.ToArray();
        }
    }
 
    // Workbook Documents
    else if (Regex.IsMatch(extention, ".xlsx|.csv"))
    {
        IWorkbookFormatProvider provider = null;
        Workbook document = null;
 
        switch (extention)
        {
            case ".xlsx": provider = new XlsxFormatProvider(); break;
            case ".csv": provider = new CsvFormatProvider(); break;
            default: provider = null; break;
        }
 
        document = provider.Import(e.File.InputStream);
 
        Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
      Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
 
        using (MemoryStream ms = new MemoryStream())
        {
            pdfProvider.Export(document, ms);
            renderedBytes = ms.ToArray();
        }
    }
 
    RadLabel1.Text = "Displayed Document: <b>" + e.File.FileName + "</b>";
 
    RadPdfViewer1.PdfjsProcessingSettings.FileSettings.Data = Convert.ToBase64String(renderedBytes);
}

 

So the first image its the consol error (Capture01)

I have tried to update the code as the following (Capture02) // i think updated it wrong way

After code update (Capture03) 

This is the first time for me to implement telerik controls and i could not find fully document for all features needed (Custom buttons, Add png to the attached like signature).

Eyup
Telerik team
 answered on 02 Jul 2020
4 answers
367 views

You can check your example :https://demos.telerik.com/aspnet-ajax/pdfviewer/applicationscenarios/dplintegration/defaultcs.aspx

 

This is my code:

<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head runat="server">
    <title>Telerik ASP.NET Example</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.js"></script>
    <link href="styles.css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
        <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" />
        <script type="text/javascript">
            window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.worker.js';
 
            function pageLoad(app, args) {
                var upload = $find('<%= RadAsyncUpload1.ClientID %>');
                $(upload.get_element()).find("input[type='file']").attr("accept", ".docx, .rtf, .html, .txt, .xlsx, .csv");
            }
            function fileUploaded(sender, args) {
                $find('<%= RadAjaxManager1.ClientID %>').ajaxRequest();
            }
        </script>
 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnablePageHeadUpdate="false">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadAsyncUpload1" />
                        <telerik:AjaxUpdatedControl ControlID="RadPdfViewer1" LoadingPanelID="RadAjaxLoadingPanel1" />
                        <telerik:AjaxUpdatedControl ControlID="RadLabel1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
        </telerik:RadAjaxLoadingPanel>
 
        <div class="demo-container size-wide" runat="server">
            <telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server"
                OnClientFileUploaded="fileUploaded" OnFileUploaded="RadAsyncUpload1_FileUploaded"
                AllowedFileExtensions=".docx,.rtf,.html,.txt,.xlsx,.csv" HideFileInput="true"
                AutoAddFileInputs="false" Localization-Select="Upload And Convert" EnableInlineProgress="false"
                MultipleFileSelection="Disabled" />
            <telerik:RadLabel ID="RadLabel1" runat="server" Text="Displayed Document: <b>Document.pdf</b>"
                Style="float: left;">
            </telerik:RadLabel>
            <telerik:RadLabel ID="RadLabel2" runat="server" Text="Supported formats: <b>.docx / .rtf / .html / .txt / .xlsx / .csv</b>"
                Style="float: right;">
            </telerik:RadLabel>
            <br />
            <br />
            <br />
            <div dir="ltr" runat="server">
                <telerik:RadPdfViewer runat="server" ID="RadPdfViewer1" Height="550px" Width="100%" Scale="0.9" Skin="Default" RenderMode="Lightweight">
                    <%--<PdfjsProcessingSettings File="../../Document.pdf"></PdfjsProcessingSettings>--%>
                </telerik:RadPdfViewer>
            </div>
        </div>
 
    </form>
</body>
</html>

 

using System;
using System.IO;
using System.Text.RegularExpressions;
using Telerik.Web.UI;
using Telerik.Windows.Documents.Common.FormatProviders;
using Telerik.Windows.Documents.Flow.FormatProviders.Docx;
using Telerik.Windows.Documents.Flow.FormatProviders.Html;
using Telerik.Windows.Documents.Flow.FormatProviders.Rtf;
using Telerik.Windows.Documents.Flow.FormatProviders.Txt;
using Telerik.Windows.Documents.Flow.Model;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.TextBased.Csv;
using Telerik.Windows.Documents.Spreadsheet.Model;
 
namespace MCS.Web
{
    public partial class DefaultCS : BasePageClass
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int maxSize = 10 * 1024 * 1024; // 10MB
 
            RadAsyncUpload1.MaxFileSize = maxSize;
            RadPdfViewer1.MaxSerializerLength = maxSize;
        }
        protected void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
        {
            byte[] renderedBytes = null;
            string extention = Path.GetExtension(e.File.FileName);
 
            // RadFlow Documents
            if (Regex.IsMatch(extention, ".docx|.rtf|.html|.txt"))
            {
                IFormatProvider<RadFlowDocument> provider = null;
                RadFlowDocument document = null;
 
                switch (extention)
                {
                    case ".docx": provider = new DocxFormatProvider(); break;
                    case ".rtf": provider = new RtfFormatProvider(); break;
                    case ".html": provider = new HtmlFormatProvider(); break;
                    case ".txt": provider = new TxtFormatProvider(); break;
                    default: provider = null; break;
                }
 
                document = provider.Import(e.File.InputStream);
 
                Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
               Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
 
                using (MemoryStream ms = new MemoryStream())
                {
                    pdfProvider.Export(document, ms);
 
                    renderedBytes = ms.ToArray();
                }
            }
 
            // Workbook Documents
            else if (Regex.IsMatch(extention, ".xlsx|.csv"))
            {
                IWorkbookFormatProvider provider = null;
                Workbook document = null;
 
                switch (extention)
                {
                    case ".xlsx": provider = new XlsxFormatProvider(); break;
                    case ".csv": provider = new CsvFormatProvider(); break;
                    default: provider = null; break;
                }
 
                document = provider.Import(e.File.InputStream);
 
                Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
              Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
 
                using (MemoryStream ms = new MemoryStream())
                {
                    pdfProvider.Export(document, ms);
                    renderedBytes = ms.ToArray();
                }
            }
 
            RadLabel1.Text = "Displayed Document: <b>" + e.File.FileName + "</b>";
 
            RadPdfViewer1.PdfjsProcessingSettings.FileSettings.Data = Convert.ToBase64String(renderedBytes);
        }
    }
}
Eyup
Telerik team
 answered on 02 Jul 2020
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?