none
הדפסת WEBFORM באמצעות SSRS RRS feed

  • שאלה

  • שלום רב

    אני דיי חדש בתכנות ב - C# וכן בשימוש של הצגת דוחות ב - SSRS.

    ראשית כמה נתונים : 

    אני משתמש ב- (VS2013 (Professional      וכן ב- SQL Server Data Tools for Visual Studio 2013.

    הפרויקט שלי מורכב מכמה WEBFORM וכן גם ה - SSRS קיים  כלומר אני מצליח ליצור דוחות כמו למשל דוח שיצרתי שפונה ל - SQL SERVER 

    ומציג את נתוני השאילתה בדוח.

    השאלה היא כזו : יצרתי WEBFORM ואני צריך להדפיס אותו באמצעות SSRS.

    ניסיתי לחשוב בתחילה על אפשרות של יצירת Button ב - WEBFORM ובהפעלת ה - event שבלחיצה על הכפתור  ליצור הדפסה. וב - SSRS איכשהו לנסות 

    "לגשת"  לאותו כפתור אבל עד כמה שידוע לי זה לא אפשרי.  גם עד כמה שקראתי גם אי אפשר ליצור Button ב - SSRS שיפנה לאיזשהו WEBFORM.

    קראתי גם על ReportViewer שיוצרים אותו ב - WEBFORM אבל עדיין לא הצלחתי ליצור קישור בין ה- WEBFORM לבין ה - SSRS.

    אשמח לעזרה בנושא או אפילו רעיון כלשהו שיעזור לי ליצור איזשהו קשר בין ה - WEBFORM לבין ה - SSRS

    תודה

    יום שישי 04 ספטמבר 2015 05:58

תשובות

  • בוקר טוב,

    אנחנו צריכים הרבה יותר מידע כדי להבין מה אתה עושה כרגע :-)

    מכיוון שזו שאלה כללית ורוב המפתחים לא פועלים ביום יום מול דוחות מוכנים של SSRS בעדיפות למידע שיוכל לספק לנו אפשרות לשחזר את העניין כמו דוגמת קוד. בעדיפות לצרף פרוייקט לדוגמה שנוכל לדון עליו בפורום.

    אחת השיטות לעבודה מול SSRS היא באמצעות קונטרולים מובנים בשם report design and ReportViewer controls
    האם אתה נעזר בהם?

    האם אתה נעזר במחלקות המובנות של ScriptManager עבור פעולות AJAX?!?
    זה אחד הדברים הכי עלובים שמייקרוסופט סיפקו לנו לדעתי! והוא ממש בגשדר אסור לשימוש לדעתי (כל המימוש של AJAX עם webforms שכולל את כל ה page life cycle מהווה אבדסורד). אני מאוד ממליץ לממש AJAX לבד בעזרת JS אם אפשר.

    ** דרך אגב, הרעיון של שימוש בדוחות SSRS מוכנים נועד לשלושה קבוצות לדעתי: (1) בעיקר למי שאינו שולט בפיתוח וזו האפשרות היחידה שלו. (2) למי שמחפש פתרון ויזואלי מהיר המתאים לתוצאות המובנות של קונטרולים מוכנים ואין לו את המשאבים לפתח לבד והוא לא רוצה מימוש גמישות של מה שאינו מובנה. (3) למי שאין לו ברירה וכבר יש לו מאות דוחות או שהוא מקבל דוחות מגורם שלישי וצריך להציג אותם as-it-is. אם התנאים האלו לא מחוייבים אז אפשר להגיע לתוצאות הרבה יותר טובות בבניית דוחות ישירות ב asp.net, ובעיקר הרבה הרבה יותר יעילים מבחינת השאילות והעבודה מול מסד הנתונים. אחרי הכל כשלומדים לפתח אפליקציה אינטרנט מה אנחנו עושים בעצם? אנחנו לומדים ליצור טפסים, אנחנו לומדים לקרוא נתונים ממסד הנתונים ולהציג אותו בל צורה שאנחנו רוצים, ואנחנו לומדים לעבוד ישירות עם מסד הנתונים (שאילתות) בצורה יעילה ומותאמת לאפליקציה שלנו. 


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    • סומן כתשובה על-ידי hezi21081978 יום ראשון 06 ספטמבר 2015 14:55
    יום שישי 04 ספטמבר 2015 06:20
    מנחה דיון

כל התגובות

  • בוקר טוב,

    אנחנו צריכים הרבה יותר מידע כדי להבין מה אתה עושה כרגע :-)

    מכיוון שזו שאלה כללית ורוב המפתחים לא פועלים ביום יום מול דוחות מוכנים של SSRS בעדיפות למידע שיוכל לספק לנו אפשרות לשחזר את העניין כמו דוגמת קוד. בעדיפות לצרף פרוייקט לדוגמה שנוכל לדון עליו בפורום.

    אחת השיטות לעבודה מול SSRS היא באמצעות קונטרולים מובנים בשם report design and ReportViewer controls
    האם אתה נעזר בהם?

    האם אתה נעזר במחלקות המובנות של ScriptManager עבור פעולות AJAX?!?
    זה אחד הדברים הכי עלובים שמייקרוסופט סיפקו לנו לדעתי! והוא ממש בגשדר אסור לשימוש לדעתי (כל המימוש של AJAX עם webforms שכולל את כל ה page life cycle מהווה אבדסורד). אני מאוד ממליץ לממש AJAX לבד בעזרת JS אם אפשר.

    ** דרך אגב, הרעיון של שימוש בדוחות SSRS מוכנים נועד לשלושה קבוצות לדעתי: (1) בעיקר למי שאינו שולט בפיתוח וזו האפשרות היחידה שלו. (2) למי שמחפש פתרון ויזואלי מהיר המתאים לתוצאות המובנות של קונטרולים מוכנים ואין לו את המשאבים לפתח לבד והוא לא רוצה מימוש גמישות של מה שאינו מובנה. (3) למי שאין לו ברירה וכבר יש לו מאות דוחות או שהוא מקבל דוחות מגורם שלישי וצריך להציג אותם as-it-is. אם התנאים האלו לא מחוייבים אז אפשר להגיע לתוצאות הרבה יותר טובות בבניית דוחות ישירות ב asp.net, ובעיקר הרבה הרבה יותר יעילים מבחינת השאילות והעבודה מול מסד הנתונים. אחרי הכל כשלומדים לפתח אפליקציה אינטרנט מה אנחנו עושים בעצם? אנחנו לומדים ליצור טפסים, אנחנו לומדים לקרוא נתונים ממסד הנתונים ולהציג אותו בל צורה שאנחנו רוצים, ואנחנו לומדים לעבוד ישירות עם מסד הנתונים (שאילתות) בצורה יעילה ומותאמת לאפליקציה שלנו. 


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    • סומן כתשובה על-ידי hezi21081978 יום ראשון 06 ספטמבר 2015 14:55
    יום שישי 04 ספטמבר 2015 06:20
    מנחה דיון
  • אהלן

    לא הבנתי למה סימת את התגובה שלי כתשובה, אני רק ביקשתי יותר מידע כדי לעזור לך בתשובה. בסך הכל שאלתי אם אתה עובד עם הקונטרולים מובנים בשם report design and ReportViewer controls.

    על הדרך נתתי מידע כללי אבל אני לחא מבין כיצד מהתגובה שלי קיבלת תשובה לשאלה שלך, אלא אם לא הכרת את הקונטרולים מובנים בשם report design and ReportViewer controls ובעקבות התגובה החלטת לעבוד איתם.


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    יום ראשון 06 ספטמבר 2015 16:36
    מנחה דיון
  • הייי

    סליחה על הסימון .....זה היה בטעות...פעם ראשונה שלי בפורומים....

    צירפתי את הקוד ב - ASPX של ה - WEBFORM שלי שאותו אני רוצה להדפיס.

    אני יודע שישנם דרכים קלות יותר להדפיס WEBFORMS אבל קיבלתי משימה מסוימת מאיזו חברה והדרישה שלהם היא להדפיס את ה - WEBFORM באמצעות דוח SSRS. 

    אני אכן נעזר במחלקות  המובנות של ScriptManager עבור פעולות AJAX  אבל לא בשביל הדוחות אלא  לביצוע משהו אחר. פשוט ראיתי במספר סרטונים ביוטיוב שמשתמשים בו לצורך ביצוע פעולות של AutoComplete של טקסט אז,  זה השימוש שלי ב -  ScriptManager.  

    בהמשך לשאלותיך אני לא משתמש ב - report design and ReportViewer controls אבל כשחיפשתי פתרון לבעיית ההדפסה של ה - WEBFORM אז  נתקלתי במספר מסמכים שהפנו אותי לאותם קונטרולים אבל לא ממש הצלחתי להבין איך לעשות זאת.

    אחרי מחשבה מחודשת אני מעדיף (אם זה אפשרי כמובן ) ליצור דוח ב - SSRS שברגע שאני אפתח אותו תהיה לי אפשרות בחירה מבין כמה WEBFORMS שנמצאים בפרויקט וברגע שאני אבחר WEBFORM ספציפי  אז הוא יודפס.  

    אני אשמח לשלוח את כל הפרויקט אבל אני לא יודע איך לשלוח אותו, אפשר במייל ?

     

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Clientcard.aspx.cs" Inherits="WebApplication4.Clientcard" %>
    
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
        
        <script src="Scripts/jquery-1.8.2.js"></script>
        <script src="Scripts/jquery-ui.js"></script>
        <link href="Scripts/jquery-ui.css" rel="stylesheet" />
    
        <script>type = "text/javascript"
            $(document).ready(function () {
                $('#FindClientBox').autocomplete({
                    source: 'spGetCustomerNames.ashx'
                })
            });
        </script>
    
    
    
        <style type="text/css">
    
           
            .BtnStyle
        {
            width:100px;
            height:30px;
            margin-top:30px;
            font-family:Sakkal Majalla;
            font-size:18px;
        }
            .auto-style1 {
                font-size: xx-large;
                text-align: center;
            }
            .auto-style2 {
                width: 100%;
                height: 332px;
            }
            .auto-style3 {
                width: 681px;
            }
            .auto-style4 {
                height: 20px;
                background-color: #FF66FF;
            }
            .auto-style5 {
                width: 681px;
                height: 20px;
            }
            .auto-style6 {
                width: 1545px;
                color: #FFFFFF;
                background-color: #FFFFFF;
            }
            .auto-style7 {
                height: 20px;
                width: 1728px;
            }
            .auto-style8 {
                width: 2662px;
            }
            .auto-style9 {
                height: 20px;
                width: 2662px;
            }
            .auto-style11 {
                background-color: #FF66FF;
            }
            .auto-style12 {
                width: 681px;
                height: 20px;
                background-color: #FFFFFF;
            }
            .auto-style13 {
                height: 20px;
                width: 1545px;
                background-color: #FFFFFF;
                text-align: right;
            }
            .auto-style14 {
                width: 1545px;
                background-color: #FFFFFF;
            }
            .auto-style15 {
                height: 20px;
                width: 1545px;
                background-color: #FFFFFF;
            }
            .auto-style16 {
                width: 2662px;
                height: 39px;
            }
            .auto-style17 {
                width: 1545px;
                background-color: #FFFFFF;
                height: 39px;
            }
            .auto-style18 {
                width: 681px;
                height: 39px;
            }
            .auto-style19 {
                background-color: #FF66FF;
                height: 39px;
            }
            .auto-style20 {
                width: 2662px;
                height: 38px;
            }
            .auto-style21 {
                width: 1545px;
                color: #FFFFFF;
                background-color: #FFFFFF;
                height: 38px;
            }
            .auto-style22 {
                width: 681px;
                height: 38px;
            }
            .auto-style23 {
                background-color: #FF66FF;
                height: 38px;
            }
            .auto-style24 {
                width: 2662px;
                height: 36px;
            }
            .auto-style25 {
                width: 1545px;
                background-color: #FFFFFF;
                height: 36px;
            }
            .auto-style26 {
                width: 681px;
                height: 36px;
            }
            .auto-style27 {
                background-color: #FF66FF;
                height: 36px;
            }
            .auto-style28 {
                background-color: #FFFFFF;
            }
            .auto-style29 {
                width: 1545px;
                color: #FFFFFF;
                background-color: #FFFFFF;
                height: 20px;
            }
            .auto-style30 {
                background-color: #FFFFFF;
                height: 20px;
            }
            .auto-style31 {
                width: 681px;
                direction: rtl;
            }
            .auto-style32 {
                width: 100%;
            }
            .auto-style33 {
                margin-left: 31px;
            }
            .auto-style34 {
                height: 20px;
                width: 1545px;
            }
            .auto-style35 {
                background-color: #00FFFF;
            }
        </style>
    </head>
    <body style="height: 1019px">
        <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <div class="auto-style1">
        
            <asp:HiddenField ID="HiddenField1" runat="server" />
        
            <span class="auto-style35">כרטיס לקוח</span></div>
            <table class="auto-style2">
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style31">
                        <asp:TextBox ID="FindClientBox" runat="server" CssClass="auto-style7" OnTextChanged="FindClientBox_TextChanged" Width="180px"></asp:TextBox>
                    </td>
                    <td class="auto-style28" style="text-align: right">
                        : בחירת לקוח </td>
                </tr>
                <tr>
                    <td class="auto-style9">
                        </td>
                    <td class="auto-style29">
                        </td>
                    <td class="auto-style5">
                    </td>
                    <td class="auto-style30" style="text-align: right">
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style3">
                        &nbsp;</td>
                    <td class="auto-style28" style="text-align: right">
                        <asp:Button ID="Button1" runat="server" Text="בחר לקוח" Width="74px" OnClick="Button1_Click" />
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        <asp:Button ID="PensionCellClient" runat="server" style="z-index: 1; margin-left: 80px;" Text="מוצרים שנמכרו ללקוח" OnClick="PensionCellClient_Click" Width="163px" />
                    </td>
                    <td class="auto-style3">
                        &nbsp;</td>
                    <td class="auto-style28" style="text-align: right">
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="FindClientBox" ErrorMessage="אנא בחר לקוח"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style3">
                        &nbsp;</td>
                    <td class="auto-style28" style="text-align: right">
                        &nbsp;</td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style3">
                        &nbsp;</td>
                    <td class="auto-style28" style="text-align: right">
                        &nbsp;</td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style3">
                        &nbsp;</td>
                    <td class="auto-style28" style="text-align: right">
                        &nbsp;</td>
                </tr>
                <tr>
                    <td class="auto-style8">
                        &nbsp;</td>
                    <td class="auto-style6">
                        &nbsp;</td>
                    <td class="auto-style3">
                        <asp:TextBox ID="NameClient" runat="server" style="text-align: right; margin-left: 1px; margin-bottom: 0px;" Width="299px" OnTextChanged="Namebox_TextChanged"></asp:TextBox>
                    </td>
                    <td class="auto-style11" style="text-align: right">
                        &nbsp;שם&nbsp;</td>
                </tr>
                <tr>
                    <td class="auto-style20"></td>
                    <td class="auto-style21"></td>
                    <td class="auto-style22">
                        <asp:TextBox ID="AdressClient" runat="server" style="text-align: right" Width="301px"></asp:TextBox>
                    </td>
                    <td class="auto-style23">
                        <asp:Label ID="Adresslbl" runat="server" style="text-align: right" Text="כתובת" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style9"></td>
                    <td class="auto-style34"></td>
                    <td class="auto-style5">
                        <asp:TextBox ID="CityClient" runat="server" style="text-align: right; margin-left: 0px;" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style4">
                        <asp:Label ID="Citylbl" runat="server" style="text-align: right" Text="עיר" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style9">
                        &nbsp;</td>
                    <td class="auto-style13">
                    </td>
                    <td class="auto-style12">
                        <asp:TextBox ID="PostClient" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style4">
                        <asp:Label ID="Postlbl" runat="server" style="text-align: right" Text="ת.ד" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style9"></td>
                    <td class="auto-style34"></td>
                    <td class="auto-style5">
                        <asp:TextBox ID="PhoneHomeClient" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style4">
                        <asp:Label ID="phoneHomelbl" runat="server" style="text-align: right" Text="טלפון בית" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style9"></td>
                    <td class="auto-style34"></td>
                    <td class="auto-style5">
                        <asp:TextBox ID="Cell1Client" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style4">
                        <asp:Label ID="Cell1lbl" runat="server" style="text-align: right" Text="נייד 1" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style24"></td>
                    <td class="auto-style25"></td>
                    <td class="auto-style26">
                        <asp:TextBox ID="Cell2Client" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style27">
                        <asp:Label ID="Cell2lbl" runat="server" style="text-align: right" Text="נייד 2" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style9"></td>
                    <td class="auto-style15"></td>
                    <td class="auto-style5">
                        <asp:TextBox ID="MailClient" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style4">
                        <asp:Label ID="maillbl" runat="server" style="text-align: right" Text="דואר אלקטרוני" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style16"></td>
                    <td class="auto-style17"></td>
                    <td class="auto-style18">
                        <asp:TextBox ID="FaxClient" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style19">
                        <asp:Label ID="Faxlbl" runat="server" style="text-align: right" Text="פקס" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">&nbsp;</td>
                    <td class="auto-style14">&nbsp;</td>
                    <td class="auto-style3">
                        <asp:TextBox ID="RemarkClient" runat="server" style="text-align: right" Width="300px"></asp:TextBox>
                    </td>
                    <td class="auto-style11">
                        <asp:Label ID="Remarklbl" runat="server" style="text-align: right" Text="הערות" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">&nbsp;</td>
                    <td class="auto-style14">&nbsp;</td>
                    <td class="auto-style3">
                        <asp:TextBox ID="ConnecManClient" runat="server" style="text-align: right" Width="299px"></asp:TextBox>
                    </td>
                    <td class="auto-style11">
                        <asp:Label ID="Connectlbl" runat="server" style="text-align: right" Text="איש קשר" Width="180px"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style8">&nbsp;</td>
                    <td class="auto-style14">&nbsp;</td>
                    <td class="auto-style3">
                        <asp:TextBox ID="ZipClient" runat="server" style="text-align: right" Width="295px"></asp:TextBox>
                    </td>
                    <td class="auto-style11">
                        <asp:Label ID="Ziplbl" runat="server" style="text-align: right" Text="מיקוד" Width="180px"></asp:Label>
                    </td>
                </tr>
            </table>
            <p>
                &nbsp;</p>
            <p>
                <asp:Button ID="RetuenClient" runat="server" OnClick="RetuenButton_Click" style="text-align: center; margin-left: 806px" Text="חזור לראשי" Width="103px" />
                </p>
            <asp:Panel ID="Panel1" runat="server" Height="195px" Width="194px" HorizontalAlign="Left">
                <asp:GridView ID="GridView1" runat="server">
                </asp:GridView>
                
                <table class="auto-style32">
                    <tr>
                        <td>&nbsp;</td>
                        <td>&nbsp;</td>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                        <td>
                            <asp:Button ID="ReturnPensioCell" runat="server" CssClass="auto-style33" Text="חזור" Width="81px" />
                        </td>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                        <td>&nbsp;</td>
                        <td>&nbsp;</td>
                    </tr>
                </table>
                <br />
            </asp:Panel>
            <p>
                &nbsp;</p>
            <p>
                &nbsp;</p>
            <p>
                &nbsp;</p>
            <p>
                &nbsp;</p>
            
            <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BackgroundCssClass="modalBackground" OkControlID="ReturnPensioCell" PopupControlID="Panel1" TargetControlID="HiddenField1" X="200" Y="200"></cc1:ModalPopupExtender>
             
            
        </form>
    </body>
    </html>
    

    יום ראשון 06 ספטמבר 2015 21:29
  • בוקר טוב

    רציתי לדעת אם קיבלת את הקוד ששלחתי ...

    והאם יש מידע נוסף שאני יכול להעביר לך על מנת להתקדם

    תודה רבה

    יום שלישי 08 ספטמבר 2015 07:41
  • פספסתי ששלחת המשך להודעה. שכחתי מהשאלה :-)
    אני פועל בכמה פורומים ובודקת הודעות בכל הורומים ביחד כך שההודעה כאן עברה לעמוד 4 אחורה בערך אצלי.

    טוב ששלחת תגובה נוספת :-)
    זה הקפיץ את ההודעה קדימה.

    אני לא יכול לךהבטיח אבל אני אנסה לעבור על הקוד מחר ולשים תגובה.


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    שבת 12 ספטמבר 2015 21:41
    מנחה דיון
  • ערב טוב,

    הגיעה הזמן לקצת מידע בונה :-)

    לפי מה שאני רואה אתה עובד בצורה ישירה ואין שום קשר ל SSRS. זו בדרך כלל הדרך המוןעדפת עלי, אם היא דורשת יותר עבודה מעט, היא יכולה גמישה ויכולה לתת תוצאות הרבה יותר טובות הן מבחינת ה GUI והן מבחינת המשאבים שנדרשים מהמערכת.

    הדפסה של עמוד אינטרנט נעשית בצד הלקוח ולכן מה שאנחנו צריכים זה קוד JS. תוכל לראות דוגמה בקישור הבא:
    http://www.htmlgoodies.com/beyond/javascript/article.php/3471121

    הבעיה המרכזית בהדפסה היא לא השליחה להדפסה אלא בעיצוב. העמוד הכנת נועד להצגה בדפדפן. אתה עושה שימוש בקונטרול מובנה של GridView שנועד להצגה על הדפדפן. אם הטבלה שלך בצד הלקוח רחבה מדי אז אתה תקבל הדפסה מאוד לא יפה עם חיתוך שלא מתאים לתוכן.

    האתגר שלך הוא בעיצוב כמו למשל חיתוך התוכך בצורה שיותאם לרוחב ההדפסה.

    אפשרות 1: באופן ישני צור במקום GridView בודד עם כל המידע, כמה GridView כך שכל אחד כולל כמה טורים שנכנסים בוודאות לרוחב העמוד.

    אפשרות 2: האפשרות הראשונה דיי עלובה במקרים דינאמיים מפני שרוב הטורים יכול להשתנות ואנחנו צריכים דרך דינאמית לקבוע איזה טורים יהיו למשל ב GridView הראשון ואז\יזה בנשני (ואלי ישלנו אפילו צורך לחתוך ל 10 GridView או יותר...)

    השיטה פשוטה בעקרון, ומבוססת על כך שאנחנו קודם מציגים את הטבלה המקורית כמו שיש לך כרגע. עתה אחרי טעינת העמוד מריצים JS שבודק מה רוחב כל עמודה בטבלה. בעזרת JS אנחנו יוצרים טבלאות חדשות מתוך התוכן של הטבלה המקורית בהתאם לרוחב שמצאנו. ובשלב האחרון מורידים את הטבלה המקורית ומציגים את הטבלאות שבנינו בצורה דינאמית.

    המימוש של מה שכתבתי לא כולל שום פקודה מורכבת. הלוגיקה גם לא מורכבת. אבל זה יכול לקחת זמן בפעם הראשונה. ישנם כמה פתרונות מובנים שאתה יכול לנסות, כמו למשל:

    הנה דוגמה יפה לרעיון:
    http://cdn.rawgit.com/salmanarshad2000/demos/v1.0.0/html/print-wide-html-tables.html

    לחיצה על הכפתור בונה טבלה המתאימה להדפסה וכל מה שנשאר זה לשלוח להדפסה בעזרת המתודה window.print של JS

    את ההוראות שימוש והקוד המלא של הדוגמה מעל תוכל גם לראות כאן: http://salman-w.blogspot.co.il/2013/04/printing-wide-html-tables.html

    * יש עוד דוגמאות ברשת. אני ממלית לבנות את הקוד לבד. זה לא מאוד מורכז ותרגיל טוב מאוד ללימוד JS.

    דוגמה להדפסה עצמה תוכל לראות כאן: http://www.htmlgoodies.com/beyond/javascript/article.php/3471121

    * לגבי הקשר ל SSRS הוא לחלוטין לא ברור לי מכיוון שאין לך כאמור שום שימוש בSSRS בדוח שלך. SSRS הוא שירות של יצירת דוחות. אם אתה יוצר דוח בעזרת קוד שלך (לחמשל בעזרת גריד) אז אין לך שום צורך במישהו אחר שיבנה לך את הדוח ז"א אין לך צורך ב SSRS.


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    יום ראשון 13 ספטמבר 2015 19:11
    מנחה דיון