Autor Beitrag
Henri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 09:36 
Hallo Leute,

habe ich wieder eine Frage, in diese Try-catch-block versuche ich Datei in meinem Programm hochzuladen, aber ich möchte mal etwas andern, vielleicht kann jemandem eine Idee haben.
es geht darum, wenn ich Dateien Hochladen will, geht es per Drag and Drop, dann vor der Ladung, muss ich für jede Datei die Dokumentart und die Dokumentunterart festlegen, wenn nicht, dann wird die Datei in ParentfolderDisplayname(dem Vaterordner) gespeichert.
Jetzt möchte gern diesen Stückcode ändern, so dass es in der large wäre, die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
dh wenn ich sehe zum Beispiel habe ich 10 Datei die zu der gleichen Dokumentart und Dokumentunterart gehört, Ziehe die per Drag und Drog, dann lege ich die Dokumentart und die Dokumentunterart fest.
dann werden die hochgeladen.

Wenn ich irgendwo unklar war, bitte einfach mal fragen.
Danke für ihre Hilfe.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
  var alcon = Session.Instance.GetALConnector();
    try
    {
      Resources result = alcon.GetRepositoryResources(" select Dokumentart, Dokumentunterart, ParentFolderDisplayname where resourcetype = 2 and deletestate = 0 order by parentidentifier,Dokumentart, Dokumentunterart, displayname scope subtree"false, folder, ""false);

      
      for(int i = 0; i < result.Count;i++)
      {
        if(worker.CancellationPending == false)
        {

          RepositoryDocument document = (RepositoryDocument)result[i];
          String dokArt = vlDokArt.GetText4Key( (String)document.PropertyProvider.GetProperty("Dokumentart",true));
          String dokUnterArt = vlDokUnterArt.GetText4Key((String)document.PropertyProvider.GetProperty("Dokumentunterart",true));
          
          //System.Windows.MessageBox.Show(dokArt);
          String parentFolderDisplayname = (String)document.PropertyProvider.GetProperty("ParentFolderDisplayname",true);
          String computedFolderPath =FolderPath;
          if (!parentFolderDisplayname.Equals("14. Revision")){
            
            if (dokArt == null){
              dokArt =parentFolderDisplayname;
            }else{
              computedFolderPath = computedFolderPath+"\\"+parentFolderDisplayname;
            }
          }
          
          if ( dokArt != null){
            if ( dokUnterArt!= null){
              computedFolderPath = computedFolderPath +"\\" +dokArt + "\\"+ dokUnterArt;
            }else{
              computedFolderPath = computedFolderPath +"\\" +dokArt ;
            }
          }
          
          
          //System.Windows.MessageBox.Show(computedFolderPath);
          
          if ( Directory.Exists(computedFolderPath)){
            //            Directory.CreateDirectory(computedFolderPath);
            //System.Windows.MessageBox.Show("ist da");

          }else{
            //System.Windows.MessageBox.Show("erstellen");
            Directory.CreateDirectory(computedFolderPath);
            //System.Windows.MessageBox.Show("erledigt");
          }
          
          //result.
          IList<IContentItemInfo> contentInfo = document.ContentProvider.GetContent(nullfalse);
          //List<string> files = contentInfo.Select(p => p.LocalFilename).ToList();
          List<string> files = contentInfo.Select(p => p.LocalFilename).ToList();
          
          //System.Windows.MessageBox.Show(contentInfo.Select(p => p.LocalFilename).ToString());
          
          AddHtmlInformation(ref xhtml, document, files, computedFolderPath);
          foreach(string file in files)
          {
            if(worker.CancellationPending == false)
            {
              string target = System.IO.Path.Combine(computedFolderPath, System.IO.Path.GetFileName(file));

              while(File.Exists(target))
              {
                string temp = System.IO.Path.GetFileNameWithoutExtension(target) + "_" + System.IO.Path.GetExtension(target);
                target = System.IO.Path.Combine(computedFolderPath, temp);
              }
              File.Copy(file, target);
            }
            else
            {
              e.Result = xhtml;
              e.Cancel = true;
              return;
            }
            
          }
          
          worker.ReportProgress((100 / result.Count) * (i + 1));
//              }
        }
        else
        {
          e.Result = xhtml;
          e.Cancel = true;
          return;
        }
      }
    }
    finally{ alcon.Release(); }

    e.Result = xhtml;
  }



Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 10.08.2017 um 09:59
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 10.08.17 14:58 
Sorry, aber auch nach mehrmaligem Lesen kann ich nicht dein Problem verstehen (und das liegt nicht nur an dem schlechten Deutsch).

Und was genau verstehst du unter
Zitat:
... die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
?

PS: Pfade solltest du mittels Path.Combine(...) zusammensetzen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.08.17 15:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 16:43 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Sorry, aber auch nach mehrmaligem Lesen kann ich nicht dein Problem verstehen (und das liegt nicht nur an dem schlechten Deutsch).

Und was genau verstehst du unter
Zitat:
... die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
?

PS: Pfade solltest du mittels Path.Combine(...) zusammensetzen.


Wenn ich mehrere Datei per Drag and Drop ziehen sollte wie auf dem Bild1
www.bilder-upload.eu...5c4ec-1502376108.png
muss ich jedes mal vor der abspeicherung die Dokumentart und Dokumentunterart jeder Datei einstellen (recht auf dem Bild2)
www.bilder-upload.eu...72df4-1502376241.png

Sorry von meinem schlechten Deutsch

Wenn Frage gibt, antworte ich gern
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.08.17 17:57 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 18:07 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Wir wissen immer noch nicht, was eine Dokumentart bei DIR ist! Und Dokumentunterart soll: Parkett, Rolltore, Sanitär ... sein?! Das haben diese Begriffe mit einem Dokument zu tun?


Bevor ich ein Datei abspeichert, lege ich fest, zu welche Dokumentart und Dokumentunterart gehört
ZB. ich konnte festlegen, dass Die Objektorientierte-Datei eine "Nachweis" ist. Die werte von Dokumentarten und Dokumentunterarten sind schon in meinem Programm bekannt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.08.17 19:17 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 20:20 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Ok, einzig dein Programm hat Werte / Attribute zu "Dokumentarten und Dokumentunterarten", die du selber bestimmt hast. Und du möchtest mit Drag and Drop erreichen, dass dein Programm selbstständig einer Datei, Werte zu Dokument(-unter)arten festlegt?
Das ist so nicht möglich, solange dein Programm nicht weiss, worum es in der Datei geht. Entweder hat die Datei im Dateinamen einen Begriff oder ein Merkmal, dass sie eindeutig für z.B. Sanitär kennzeichnet, dann könntest du die Dateinamen vergleichen und darauf prüfen.
Ansonsten, keine Chance.


Es ist nicht so gemeint , vielleicht ahbe ich mich falsch ausgedruckt.
Ich möchte mal den Code ändern, so dass ich die Werte /Attribute (Dokumentarten und Dokumentunterarten) zu mehrere Dateien gleichzeitig vergeben kann.
Bis jetzt verarbeitet den Code Dateien nach Dateien.
Nehme ich ein Beispiel:
Ich habe 5(A, B, C, D, E) Dateien, die ich gern abspeichern möchte, per Drag and Drug ziehe alle 5 Dateien und lege ich die in meine Programm.
So werden die verarbeiten:
Öffnet sich das Programm mit der Datei A direkt recht (wie auf dem Bild) kann der Anwender entscheiden was für eine Dokumentart und Dokumentunterart will vergeben, wenn es getan ist , dann der Anwender drückt auf speichern, dann wird die Datei gespeichert.
dann nächte Datei B genau das gleich usw...
Mein Wünsch ist, ich weiss ZB. mein 5 Dateien gehört alle zu der Dokart X und zu dokunterart Y , wenn ich die Arten schon vergeben dass das Programm alle abspeichert, und nicht nach jeder Datei die Art und Unterart fragt.
Das ist das Problem wenn ich mich gut ausgedruckt habe.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.08.17 20:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 11.08.17 06:19 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert das Drag and Drop schon?
Sobald ein Drop auf ein Control erfolgt, dann merkst du dir aus jener Datei den vollständigen Dateipfad in z.B. einer List<string> oder string[].
Wenn alle benötigten Dateien ge-dropt sind, gehe mit einer Schleife alle Elemente in der Liste/Array durch und setze deine Dok(unter)art so, wie du es im Moment mit einer Datei machst.


Ja das Drag and Drog funktioniert sehr gut
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 11.08.17 06:53 
user profile iconHenri hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich mehrere Datei per Drag and Drop ziehen sollte wie auf dem Bild1
Es wäre sinnvoller die Bilder anzuhängen, damit sie auch für spätere Leser noch verfügbar sind. Dazu kommt, dass bei uns in der Firma solche Seiten blockiert sind, ich die Bilder also gar nicht anschauen kann.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 11.08.17 08:12 
Henri hat folgendes geschrieben:
Mein Wünsch ist, ich weiss ZB. mein 5 Dateien gehört alle zu der Dokart X und zu dokunterart Y , wenn ich die Arten schon vergeben dass das Programm alle abspeichert, und nicht nach jeder Datei die Art und Unterart fragt.

Aber woher soll das Programm das wissen?
Bau doch eine CheckBox "Für alle weiteren Dateien übernehmen" (oder so ähnlich) ein, welche der Anwender dann bei der ersten Datei aktiviert und das Programm dann für die weiteren Dateien die ausgewählte Dokumentart und -unterart übernimmt.

PS: Ich habe die Bilder mal als Anhang in den entsprechenden Beitrag eingefügt.
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 11.08.17 10:52 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Bau doch eine CheckBox "Für alle weiteren Dateien übernehmen" (oder so ähnlich) ein, welche der Anwender dann bei der ersten Datei aktiviert und das Programm dann für die weiteren Dateien die ausgewählte Dokumentart und -unterart übernimmt.

Dein Vorschlag scheint mir gut, muss ich mal überlegen, wie ich sowas schaffen kann.
Das einfachste ist schon geschafft, muss ich mit dem Code sehen
Einloggen, um Attachments anzusehen!