Anleitung: Eine Dateieigenschaft hinzufügen
time cockpit unterstützt Dateianhänge an Datenbankzeilen. Um den Inhalt und die Metadaten der Datei zu speichern, müssen Sie Ihr Modell erweitern (siehe auch Anleitung: Das Datenmodell ändern). In diesem Kapitel beschreiben wir im Detail, wie Sie Ihrem Modell eine Dateieigenschaft hinzufügen und sie in Listen und Formularen verwenden.
Die Eigenschaft hinzufügen
TimeCockpit.Data.DataModel.FileProperty implementiert die Eigenschaft, die den Inhalt der Datei enthält. Damit sie in der Benutzeroberfläche richtig funktioniert, müssen Sie zusätzliche Eigenschaften anlegen, die den Dateinamen (FileNameColumn), den MIME-Typ (FileMimeTypeColumn) und die Dateigröße (FileSizeColumn) speichern.
Das folgende Beispiel zeigt, wie Sie der Entität Contact eine Dateieigenschaft hinzufügen:
clr.AddReference("System.Core")
from System.Linq import Enumerable
from System.Collections.Generic import List
model = Context.GetWritableModel()
contact = model.Entities.Contact
if not contact.Properties.Contains("USR_Avatar"):
# Avatar file name
fileNameProperty = TextProperty({
"Name": "USR_AvatarFileName", "InvariantFriendlyName":"Avatar File Name",
"MaxStorageSize" : 256, "IsNullable" : True, "IsDefaultDisplayProperty" : False,
"DefaultValueExpression" : "\"\"", "Ownership" : Ownership.User
})
contact.Properties.Add(fileNameProperty)
# Avatar file mime type
mimeTypeProperty = TextProperty({
"Name": "USR_AvatarMimeType", "InvariantFriendlyName":"Avatar Mime Type",
"MaxStorageSize" : 256, "IsNullable" : True,
"IsDefaultDisplayProperty" : False, "DefaultValueExpression" : "\"\"",
"Ownership" : Ownership.User
})
contact.Properties.Add(mimeTypeProperty)
# Avatar file size
fileSizeProperty = NumericProperty({
"Name": "USR_AvatarFileSize", "InvariantFriendlyName":"Avatar File Size",
"Precision" : 18, "Scale" : 0, "IsNullable" : True, "FormatPattern": "#,###",
"IsDefaultDisplayProperty" : False, "DefaultValueExpression" : "0",
"Ownership" : Ownership.User
})
contact.Properties.Add(fileSizeProperty)
# Avatar file property
allowedMimeTypes = List[String]()
allowedMimeTypes.Add("image/jpeg")
allowedMimeTypes.Add("image/png")
allowedExtensions = List[String]()
allowedExtensions.Add(".png")
allowedExtensions.Add(".jpeg")
allowedExtensions.Add(".jpg")
fileProperty = FileProperty({
"Name": "Avatar",
"InvariantFriendlyName": "Avatar",
"FileNameColumn": "USR_AvatarFileName",
"FileSizeColumn": "USR_AvatarFileSize",
"FileMimeTypeColumn": "USR_AvatarMimeType",
"MaxFileSizeInKB" : 128,
"IsNullable" : True,
"AllowedMimeTypes" : allowedMimeTypes,
"AllowedExtensions" : allowedExtensions,
"ContentProcessing": ContentProcessing.Compress,
"StorageType": StorageType.BlobStore
})
contact.Properties.Add(fileProperty)
Context.SaveModel(model)
Die Eigenschaft verwenden
Sie können die TimeCockpit.Data.DataModel.FileProperty wie jeden anderen Eigenschaftstyp verwenden. Sie können Ihrer Liste und Ihrem Formular eine TimeCockpit.Data.DataModel.View.BoundCell hinzufügen. time cockpit erkennt dann automatisch, dass Ihre Eigenschaft eine Datei darstellt, und zeigt sie passend an (ist es z. B. ein Bild, wird das Bild in der Liste angezeigt). Wenn Sie genauer steuern möchten, wie die Dateieigenschaft in Ihrer Liste oder Ihrem Formular angezeigt wird, verwenden Sie TimeCockpit.Data.DataModel.View.FileCell statt TimeCockpit.Data.DataModel.View.BoundCell.
Das folgende Beispiel verwendet eine TimeCockpit.Data.DataModel.View.BoundCell, um die Dateieigenschaft USR_Avatar anzuzeigen.
<List AllowDelete="True" AllowEdit="True" Query="From I In USR_Contact.Include(*) Select I"
xmlns="clr-namespace:TimeCockpit.Data.DataModel.View;assembly=TimeCockpit.Data">
<BoundCell Content="=Current.USR_Avatar" />
<BoundCell Content="=Current.USR_FirstName" />
<BoundCell Content="=Current.USR_LastName" />
</List>