Autor |
Beitrag |
Henri
Beiträge: 25
|
Verfasst: 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.
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)); 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 ; } } if ( Directory.Exists(computedFolderPath)){ }else{ Directory.CreateDirectory(computedFolderPath); } IList<IContentItemInfo> contentInfo = document.ContentProvider.GetContent(null, false); List<string> files = contentInfo.Select(p => p.LocalFilename).ToList(); 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 Christian S.: Topic aus C# - Die Sprache verschoben am Do 10.08.2017 um 09:59
|
|
Th69
Beiträge: 4780
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
|
Verfasst: Do 10.08.17 15:08
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Henri
Beiträge: 25
|
Verfasst: Do 10.08.17 16:43
Th69 hat folgendes geschrieben : | 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
|
Verfasst: Do 10.08.17 17:57
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Henri
Beiträge: 25
|
Verfasst: Do 10.08.17 18:07
Frühlingsrolle hat folgendes geschrieben : | 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
|
Verfasst: Do 10.08.17 19:17
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Henri
Beiträge: 25
|
Verfasst: Do 10.08.17 20:20
Frühlingsrolle hat folgendes geschrieben : | 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
|
Verfasst: Do 10.08.17 20:59
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Henri
Beiträge: 25
|
Verfasst: Fr 11.08.17 06:19
Frühlingsrolle hat folgendes geschrieben : | 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
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 11.08.17 06:53
Henri hat folgendes geschrieben : | 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
Beiträge: 4780
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
Beiträge: 25
|
Verfasst: Fr 11.08.17 10:52
Th69 hat folgendes geschrieben : | 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!
|
|
|