Tworzenie wydruku z paru dokumentów w enova365

0

Witam,

Jeśli to nieodpowiedni dział, proszę o przeniesienie. Z góry dziękuję.
Tworzę plik CMR.aspx. Plik ten zbudowany jest z tabeli z wieloma komórkami, w których zamierzam zamieścić interesujące mnie pozycje z innych dokumentów (kilku) *.aspx. W celu wskazania pliku aspx, z którego zamierzam pobierać dane, używam klauzuli:

<ea:DataContext id="dc" TypeName="Soneta.Handel.DokumentHandlowy,Soneta.Handel" runat="server"></ea:DataContext>

Następnie w odpowiedniej komórce, w której chcę zawrzeć konkretne dane, wpisuję formułę:

<ea:DataLabel ID="DataLabel1" DataMember="Kontrahent" runat="server"></ea:DataLabel>

Na tym etapie wszystko działa poprawnie. Problem pojawia się wtedy, kiedy chcę pobierać dane z KILKU dokumentów *.aspx, a więc zmuszony jestem zadeklarować kilka kontrolek DataContext, jak poniżej:

 <!--KONTROLKA ODNOSZĄCA SIĘ DO KONKRETNEGO DOKUMENTU--> <!--wydania magazynowe.aspx-->
<ea:DataContext id="dc" TypeName="Soneta.Handel.DokumentHandlowy,Soneta.Handel" runat="server"></ea:DataContext>
 <!--kontrolka magazyn.aspx-->
<ea:DataContext id="DataContext1" TypeName="Soneta.Handel.PozycjaDokHandlowego,Soneta.Handel" runat="server"></ea:DataContext>

Kolejno, analogicznie odnoszę się do interesujących mnie pól ze wskazanych plików, za pomocą:

 <!--ODWOLANIE do odbiorcy-->
<ea:DataLabel ID="DataLabel1" DataMember="Kontrahent" runat="server"></ea:DataLabel>
 <!--magazyn.aspx-->
 <!--Cechy i numery - próba podpięcia kontrolki-->
<ea:DataLabel ID="DataLabel4" DataMember="Towar.Kod" runat="server"></ea:DataLabel>

Wydruk ten tworzę na potrzeby programu enova365. Po jego podpięciu w postaci jak wyżej, pojawia się podczas jego generowania komunikat o treści: "Nieprawidłowa nazwa pola 'Towar' w dane typu 'Soneta.Handel.DokumentHandlowy'. Oczywiście nazwa pola jest poprawna i jak już wspomniałem, gdy pojedynczo zawieram kontroki datacontext, odwołując się do jednego tylko dokumentu aspx, wszystko działa poprawnie i mogę wyciągać pożądane dane. Podejrzewam, że problem leży w tym, iż w złym miejscu lub źle deklaruję odwołanie do dwóch dokumentów *.aspx. Poniżej zamieszczam również wycinek kodu, w którym te odwołania występują:

<form method="post" runat="server">
               
 <!--KONTROLKA ODNOSZĄCA SIĘ DO KONKRETNEGO DOKUMENTU--> <!--wydania magazynowe.aspx-->
<ea:DataContext id="dc" TypeName="Soneta.Handel.DokumentHandlowy,Soneta.Handel" runat="server"></ea:DataContext>
                    
 <!--kontrolka magazyn.aspx-->
<ea:DataContext id="DataContext1" TypeName="Soneta.Handel.PozycjaDokHandlowego,Soneta.Handel" runat="server"></ea:DataContext>                 
        
	<table width = "100%" height = "100%" bordercolor="black" border="1px" align="center" cellpadding="0px" cellspacing="0px">
					<tr>
						<td>
<!--ODNIESIENIE DO POLA Z DANYMI-->  
                         <ea:DataLabel ID="DataLabel2" DataMember="Kontrahent" runat="server"></ea:DataLabel>
 					</td>
						

<td>

 <!--magazyn.aspx-->
 <!--Cechy i numery - próba podpięcia kontrolki-->
<ea:DataLabel ID="DataLabel4" DataMember="Towar.Kod" runat="server"></ea:DataLabel></td>
					</tr>
				</table>
            </center>
        </form>

Z góry dziękuję za podpowiedź i wszelkie wskazówki w rozwiązaniu mojego problemu.

1

Dawno nie grzebałem w aspx w Enova, ale z tego co błąd sugeruje to nie masz DataMember, który nazywa się Towar. Błąd elegancko opisuje, że szuka tego Towar w kontekście DokumentHandlowy, a dokument handlowy nie ma "towar" tylko Pozycje i dopiero konkretna pozycja ma Pozycja.Towar..

0
AdamWox napisał(a):

Dawno nie grzebałem w aspx w Enova, ale z tego co błąd sugeruje to nie masz DataMember, który nazywa się Towar. Błąd elegancko opisuje, że szuka tego Towar w kontekście DokumentHandlowy, a dokument handlowy nie ma "towar" tylko Pozycje i dopiero konkretna pozycja ma Pozycja.Towar..

Ok, a czy masz jakiś pomysł jak mogę używać dwa razy datacontext z dwoma innymi TypeName? tak jak poniżej:

  <ea:DataContext  runat="server" TypeName="Soneta.Kadry.Pracownik,Soneta.KadryPlace"></ea:DataContext>
  <ea:DataLabel bold="false" runat="server" DataMember="Pracownik.Nazwisko"></ea:DataLabel> 

  <ea:DataContext runat="server" TypeName="Soneta.Zadania.Zadanie,Soneta.Zadania"></ea:DataContext>
  <ea:DataLabel bold="false" runat="server" DataMember="Kontrahent.EuVAT"></ea:DataLabel>

po dodaniu pracownika i zadania wyskakuje podobny błąd: "Nieprawidłowa nazwa pola 'Kontrahent' w dane typu 'Soneta.Kadry.PracownikFirmy'."
Jeśli zrobię to pojedynczo wszystko działa. Potrzebuje jednak mieć obie te rzeczy w jednym wydruku.

1

Nie możesz bazować na jakimś gotowym wydruku, który ma takie dane i go tylko pod siebie zmodyfikować? Moim zdaniem DataContext może być tylko jeden, bo ewidentnie teraz szuka Kontrahent w kadrach, więc w ogóle nie bierze pod uwagę drugiego kontekstu.

Możesz jeszcze ewentualnie zrobić sobie swój kontekst w kodzie C#

<ea:DataContext ID="DataContext1" runat="server" OnContextLoad="OnContextLoad"/>
private void OnContextLoad(Object sender, EventArgs args)
{
  
}

Jeśli chcesz zrobić tabelkę z danymi, to wtedy w tym OnContextLoad ustawiasz mu DataSource

<ea:Grid ID="Grid1" runat="server">
  <Columns>
    <ea:GridColumn Caption="Nagłówek" ID="headerCol"/>
  </Columns>
</ea:Grid>
private void OnContextLoad(Object sender, EventArgs args)
{
  Grid1.DataSource = data // <- Twoje dane
}

Ja nie wiem czy to ci jeszcze bardziej nie namiesza, ale to jedyny przykład jaki ostatnio robiłem/pomagałem w modyfikacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1