Sie KanbanBoard zeigt die Einträge einer Tabelle als Karten nebeneinander in Bahnen, eine Bahn für jeden Wert einer Spalte: die Bewertung einer Chance, der Statusgrund einer Aufgabe, das Konto, zu dem ein Datensatz gehört. Jede Bahn wird einzeln durch eine Ansicht, Seite für Seite, mit derselben Abfrage und Sicherheit wie ein Raster gelesen und zeigt ihre Anzahl und Summen in ihrer Kopfzeile an. In einer Editable Tafel bewegt sich eine Karte durch Ziehen von der Tastatur oder durch das Verschieben ins Menü auf eine andere Bahn, und die Bewegung wird sofort gespeichert; mit einer Rangspalte werden die Karten ebenfalls von Hand sortiert. Sie wird im Fluent-UI-Theme gezeichnet.
Die offenen Chancen der Beispieldaten der Demo, über Dataverse's eigene Open Opportunities-Ansicht : eine Spur für jede Bewertung mit der Anzahl der Spur und dem geschätzten Umsatz im Header. Lanes Die Spur der Chancen ohne Bewertung wird weggelassen. Die Kanban Board-Demo zeigt dasselbe Board mit Zügen, Aufrufen, Filtern und gespeicherten Aufrufen.
LaneColumn (Reagieren: laneColumn) nennt die Spalte der View-Tabelle, aus der die Lanes stammen. Eine Wahl gibt für jede seiner Optionen eine Spur an, einen Statusgrund für jeden Grund, eine Ja/Nein-Spalte, eine für jeden ihrer beiden Werte, eine Nachschlage, eine für jeden namensgebenden Datensatz, und ein Datum für die Lanes, an denen sie fällt, wie die unten beschriebenen Datumslanes . Jede andere Spalte zeigt eine Nachricht anstelle des Boards. Die Lanes folgen der Reihenfolge von Dataverse und lassen versteckte Optionen weg, und die Farbe einer Option wird als Punkt neben dem Namen ihrer Lane angezeigt. Eine Spalte, die ein Datensatz leer lassen darf, fügt für die Karten ohne Wert, ( Kein Wert), eine letzte Bahn (Kein Wert) hinzu.
Lanes (Reagieren: lanes) wählt aus, welche Bahnen und in welcher Reihenfolge angezeigt werden, nach Schlüssel: Wert 1 einer Option und 0 für Ja und Nein die ID eines Datensatzes oder ein leerer Schlüssel für die Bahn ohne Wert. Die Lanes eines Lookups sind die Datensätze, die die Karte der Ansicht benennen und in einer gruppierten Abfrage gelesen werden; benennen Sie sie stattdessen in LookupLanes (React: lookupLanes), um sie und ihre Reihenfolge zu korrigieren, eine Bahn ohne Karten.
React
Blazor
{/* Aufgaben von nicht gestartet bis abgeschlossen, ohne aufgeschoben und abgebrochen. */}
<KanbanBoard defaultViewId={allTasksViewId} laneColumn="statuscode" lanes={['2', '3', '4', '5']} />
{/* Eine Spur für jedes Schlüsselkonto, in der angegebenen Reihenfolge. */}
<KanbanBoard defaultViewId={openOpportunitiesViewId} laneColumn="parentaccountid" lookupLanes={keyAccounts} />
<!-- Aufgaben von nicht gestartet bis abgeschlossen, ohne aufgeschoben und abgebrochen. -->
<KanbanBoard DefaultViewId="allTasksViewId"
LaneColumn="statuscode"
Lanes="@(["2", "3", "4", "5"])" />
<!-- Eine Spur für jedes Schlüsselkonto, in der angegebenen Reihenfolge. -->
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="parentaccountid"
LookupLanes="@keyAccounts" />
Eine Bahn ohne Karten wird angezeigt, sodass eine Karte darin fallen lassen kann. Stellen ShowEmptyLanes Sie (React: showEmptyLanes) so ein false , dass sie ausgeblendet wird, sobald ihre Zählung bekannt ist. Benutzer können eine Lane auf einen schmalen Streifen ihres Namens und Zählen mit dem Button in der Header zusammenfügen und Lanes im Filtermenü der Toolbar aussortieren, das sie unter Zeigen auflistet.
Eine Datumsspalte zeigt Spuren an, wann ihr Datum fällt, gezählt in Tagen der eigenen Zeitzone des Nutzers, wobei die Woche am ersten Tag der Sprache beginnt und jedes Mal erneut berechnet wird, wenn das Board seine Spuren liest. Da keine genannt wird, sind sie überfällig, heute, morgen, diese Woche – von übermorgen bis zum Wochenende, so leer gegen Ende einer Woche – nächste Woche, später und kein Datum.
DateLanes(Reagieren: dateLanes) benennt stattdessen die Spuren in der Datumsreihenfolge. Ein Voreinstellung legt eine Spur vom aktuellen Datum aus: Yesterday, Today und Tomorrow; LastWeek, ThisWeek und NextWeek; LastMonth, ThisMonth und NextMonth; und ; die Quartale und Jahre des Kalenders, wie ThisCalendarQuarter und NextCalendarYear, sowie die fiskalischen ThisFiscalQuarter wie und LastFiscalYear, die auf das Geschäftsjahr der Organisation folgen, wie Dataverse es hält; , vor heute; OverdueEarlier und Later, die alles nehmen, was vor und nach den Bahnen um sie herum liegt; und NoDate. Eine eigene Lane hält exakte Tage, also Tage, die aus den heutigen Perioden gezählt werden, unter einem eigenen Titel: Between, Before und Starting (React: between, und beforestarting). Ein Preset erhält auch einen eigenen Titel. Probier es in der Close Dates Demo aus.
Jede Karte landet in einer Bahn, da eine Bahn nicht früher beginnt als die vorherige: nach ThisWeek, ThisMonth hält den Rest des Monats, und eine Bahn der bereits abgedeckten Karten zeigt leer und nimmt keine Karte. Ein Datum, an dem keine Bahn liegt – zwischen zwei Bahnen mit exakten Tagen – stellt ihre Karte auf keine, also beginne Earlier mit und ende mit Later , um jede Karte zu behalten.
React
Blazor
{/* Haushaltsquartale um heute herum und alles davor und danach */}
<KanbanBoard
defaultViewId={openOpportunitiesViewId}
laneColumn="estimatedclosedate"
dateLanes={[
KanbanDateLane.Earlier,
KanbanDateLane.LastFiscalQuarter,
KanbanDateLane.ThisFiscalQuarter,
KanbanDateLane.NextFiscalQuarter,
KanbanDateLane.Later,
KanbanDateLane.NoDate,
]}
/>
{/* Spuren exakter Tage mit eigenen Titeln: vor, während und nach einer Launch-Woche */}
<KanbanBoard
defaultViewId={openTasksViewId}
laneColumn="scheduledend"
dateLanes={[
KanbanDateLane.before('before', 'Before the launch', { year: 2027, month: 1, day: 4 }),
KanbanDateLane.between('launch', 'Launch week', { year: 2027, month: 1, day: 4 }, { year: 2027, month: 1, day: 11 }),
{ ...KanbanDateLane.Later, title: 'After the launch' },
KanbanDateLane.NoDate,
]}
/>
<!-- Haushaltsquartale um heute herum und alles davor und danach -->
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="estimatedclosedate"
DateLanes="@([
KanbanDateLane.Earlier,
KanbanDateLane.LastFiscalQuarter,
KanbanDateLane.ThisFiscalQuarter,
KanbanDateLane.NextFiscalQuarter,
KanbanDateLane.Later,
KanbanDateLane.NoDate,
])" />
<!-- Spuren exakter Tage mit eigenen Titeln: vor, während und nach einer Launch-Woche -->
<KanbanBoard DefaultViewId="openTasksViewId"
LaneColumn="scheduledend"
DateLanes="@([
KanbanDateLane.Before("before", "Before the launch", new DateTime(2027, 1, 4)),
KanbanDateLane.Between("launch", "Launch week", new DateTime(2027, 1, 4), new DateTime(2027, 1, 11)),
KanbanDateLane.Later with { Title = "After the launch" },
KanbanDateLane.NoDate,
])" />
Eine Karte, die auf eine andere Datumsspur verschoben wird, erhält den ersten Tag dieser Bahn, behält deren Tageszeit – auch eine Bahn hinter heute, was ein vergangenes Datum angibt – und wenn sie auf kein Datum wechselt, verliert sie ihr Datum. Eine Bahn ohne ersten Tag, wie Überfällig, ein erstes Prior oder eine leere Bahn, nimmt keine Karte. Setzt DateLaneDrop (Reagieren: dateLaneDrop) auf None und die Bahnen nehmen keine Karte voneinander: Sie werden nur angezeigt, wenn Karten fallen.
DateLaneOrder (Reagieren: dateLaneOrder) ordnet die Karten einer Datumsspur an. Rank , der Standard, ordnet sie nach Rangspalte, wie jede andere Bahn: Eine Karte, die innerhalb ihrer Bahn bewegt wird, ändert nur ihren Rang. Date Ordnet sie stattdessen nach Datum, ohne Rangspalte: Eine Karte, die unter eine andere fällt, nimmt den Tag dieser Karte und behält ihre eigene Zeit, und eine oben platzierte Karte nimmt den ersten Tag der Bahn; Karten desselben Tages bleiben in der Reihenfolge ihrer Zeiten. Probier es in der Fälligkeits-Datums-Demo aus.
React
Blazor
{/* Aufgaben nach Abgabezeit, jede Spur in Fälligkeitsreihenfolge */}
<KanbanBoard
defaultViewId={openTasksViewId}
laneColumn="scheduledend"
dateLaneOrder={KanbanDateLaneOrder.Date}
editable
/>
<!-- Aufgaben nach Abgabezeit, jede Spur in Fälligkeitsreihenfolge -->
<KanbanBoard DefaultViewId="openTasksViewId"
LaneColumn="scheduledend"
DateLaneOrder="KanbanDateLaneOrder.Date"
Editable="true" />
Zählungen und Summen
Die Kopfzeile jeder Bahn zeigt an, wie viele Karten sie enthält – 5000+ über 5.000 – und die in (React: laneAggregates) genannten LaneAggregates Summen, Durchschnitt, Mindest- oder Mehrheitspunkte einer Zahl, Geld- oder Datumsspalte oder eine Zählung einer beliebigen Spalte, über jede Karte der Lane, nicht nur über die geladenen. LaneAggregateFormats (React: laneAggregateFormats) gibt den Zahlen jeder Spalte ein Format, wie zum Beispiel C0 oder N1. Dies sind die Summen, mit denen das Spielfeld beginnt: Der Totals-Button ermöglicht es den Nutzern, ihre eigenen Spalten zu wählen, die die Karten anzeigen, und eine gespeicherte Ansicht behält sie. Zählungen und Summen werden nach jedem Zug, den das Spielbrett speichert, erneut gelesen.
LaneLimits (Reagieren: laneLimits) gibt den Bahnen per Schlüssel die meisten Karten, die sie halten sollten. Der Kopf einer begrenzten Bahn zeigt seinen Count gegen das Limit als 7 / 5, markiert, sobald der Count ihn überschreitet. Der Count ist der aller Karten der Lane, je nachdem, wonach der Nutzer sucht oder filtert. Ein Limit warnt nur, wenn EnforceLaneLimits (Reagieren: enforceLaneLimits) gesetzt ist: Dann nimmt eine volle Bahn keine Karte von einer anderen Seite, wird unter Move to nicht angeboten und hat keinen Hinzufügen-Button. Es ist die Regel des Spielbretts, nicht die des Servers: Halte für jede Möglichkeit, wie ein Datensatz mit einem Interceptor gespeichert wird, ein Limit.
React
Blazor
{/* Höchstens drei Aufgaben gleichzeitig in Arbeit */}
<KanbanBoard
defaultViewId={allTasksViewId}
laneColumn="statuscode"
laneLimits={{ '3': 3 }}
enforceLaneLimits
editable
/>
<!-- Höchstens drei Aufgaben gleichzeitig in Arbeit -->
<KanbanBoard DefaultViewId="allTasksViewId"
LaneColumn="statuscode"
LaneLimits="@(new Dictionary<string, int> { ["3"] = 3 })"
EnforceLaneLimits="true"
Editable="true" />
Karten
Eine Karte zeigt die erste Spalte der Ansicht als Titel und die anderen Spalten der Ansicht unter ihren Titeln, wie es die Karten eines Rasters tun, wobei die Spalte Bahn und die Rangspalte ausgelassen werden. CardImageColumn (React:) cardImageColumnfügt neben dem Titel eine Bildspalte als Avatar hinzu. Jede Bahn lädt PageSize (React:) pageSizeKarten nach und nach, standardmäßig 20, mit Laden mehr am Fuß. In den Einstellungen ändern Nutzer die Felder, die die Karten anzeigen, wie die Karten sortiert sind und wie viele jede Bahn lädt.
Ziehe die Karten auf deine eigene Weise mit CardTemplate (Reagieren: cardRenderer). Es erhält den Rekord und die Bahn jeder Karte;Field , Label und DisplayValue (Reagieren: field, label und displayValue) zeigt eine Spalte wie die Standardkarte, und MoveToAsyncOpenAsync und (Reagieren: open und moveTo) öffne den Datensatz und verschiebe die Karte, wo CanOpen und CanMove sie dürfen. Ein Klick auf die Karte öffnet trotzdem den Datensatz, und das Menü "Verschieben zu" befindet sich neben deinem Inhalt. Die Spalten, die eine Vorlage anzeigt, müssen die der Ansicht sein, daher liest das Spielbrett sie mit jeder Karte.
Die Aufgaben der Demo laufen über die eigene Ansicht Alle Aufgaben von Dataverse, eine Spur für jeden Statusgrund von Nicht gestartet bis Abgebrochen, jeweils fünf Karten. A CardTemplate (React: cardRenderer) zeigt das Thema jeder Aufgabe, worum es geht, wann sie fällig ist und ihre Priorität, die hohen in Rot.
Nicht angefangen
In Arbeit
Auf jemand anderen warten
Latent
Abgeschlossen
Abgesagt
Säulen
Sortieren
Karten pro Bahn
5
10
20
50
100
Nicht angefangen155
Book the on-site visit
Ebert, Marks and Tillman
Book the on-site visit
Stanton - Jacobi
Book the on-site visit
Rippin, Connelly and Hills
Book the on-site visit
Altenwerth, D'Amore and Mante
Book the on-site visit
Sawayn - Kessler
Mehr laden
In Arbeit42
Book the on-site visit
Marks - Dickinson
Book the on-site visit
Luettgen, Goldner and Rowe
Chase the signed contract
Schaden, Cronin and Daniel
Chase the signed contract
Dietrich and Sons
Chase the signed contract
Lind - Parisian
Mehr laden
Auf jemand anderen warten28
Book the on-site visit
Schmeler and Sons
Book the on-site visit
Schmeler and Sons
Book the on-site visit
Botsford - Baumbach
Book the on-site visit
Schmeler and Sons
Chase the signed contract
Boyer - Schaefer
Mehr laden
Latent18
Book the on-site visit
Adams - Torphy
Book the on-site visit
Sanford, Grimes and Satterfield
Chase the signed contract
Cole, Tillman and Langworth
Chase the signed contract
Boyle, Zulauf and Lakin
Chase the signed contract
Waelchi, Murazik and Considine
Mehr laden
Abgeschlossen57
Book the on-site visit
Waelchi, Murazik and Considine
Book the on-site visit
Bartoletti LLC
Book the on-site visit
Cole, Tillman and Langworth
Book the on-site visit
Effertz Group
Book the on-site visit
O'Hara, Streich and Conroy
Mehr laden
Abgesagt16
Book the on-site visit
Kemmer LLC
Confirm the training dates
Schmeler and Sons
Draft the statement of work
Raynor - Lakin
Draft the statement of work
Willms, Heathcote and Veum
Draft the statement of work
Rempel - Parisian
Mehr laden
Wenn die Tabelle des Boards eine Seite für seine Datensätze hat (siehe Record Pages) und das Board keine Form (React: form), verlinkt der Titel der Karte darauf und das Öffnen der Karte dorthin geht; ShowRecordLinks (React: showRecordLinks) schaltet das aus. Andernfalls öffnet ein Klicken auf eine Karte ihren Datensatz in einem Dialog in der Mitte oder, mit FormLocation (React: formLocation), in einem Seitenfeld links oder rechts. Die Form ist KanbanDefaultForm – die Spalten der Ansicht der Tabelle des Spielfelds und der Lane-Spalte, jeweils mit dem Editor, den sein Typ annimmt – oder Ihre eigene Komponente von Editoren in Form (React: form). Der Datensatz wird gelesen, während eine Datensatzseite ihn liest, über denselben Tabellenzugriff und dieselbe Spaltensicherheit, und kann nur in einem Editable Board von einem Benutzer geändert werden, der ihn ändern kann.
Karten bewegen
Auf einem Editable Spielbrett (React: editable), bewegen Nutzer eine Karte auf eine andere Bahn, indem sie sie von der Tastatur oder durch das Menü "Verschieben zu" auf der Karte ziehen. Die Karte bewegt sich sofort, und das Spielbrett speichert das, was sich geändert hat: die Spalte der Bahn – aus einem Statusgrund, allein aus dem Grund, da der Server den Zustand des Datensatzes mitbewegt – und den Rang der Karte, auf dem das Spielbrett eine Karte speichert. Ein Save, der fehlschlägt, legt die Karte zurück und sagt das.
Eine Karte bewegt sich nur dort, wo der Nutzer sie ändern kann: Schreibe auf ihren Datensatz, über den Tabellenzugriff des Portals und auf die Lane-Spalte, die eine sein muss, die ein Update setzen kann und deren Sicherheit nicht gilt. Karten in der richtigen Reihenfolge zu platzieren erfordert auch Schreiben in der Rangspalte. Eine Karte, die der Benutzer nicht bewegen kann, bleibt dort, wo sie ist, ohne Verschieben ins Menü.
Status-Reason-Lades folgen ihren Zuständen und den Zustandsänderungen, die die Tabelle erlaubt, mit denen der Server registriert wird AddStateTransitions (siehe RecordContext). Opportunities, Cases, Quotes und Orders haben sie standardmäßig: Eine Karte wird nicht von einer Lane übernommen, die ihr Datensatz nicht erreichen kann, und Move to listet nur die Lades auf, die sie erreichen kann. Eine Statusänderung, die ein Update vornimmt – eine Gelegenheit wieder geöffnet, ein Fall abgebrochen oder wieder aktiviert, ein Quote aktiviert, ein Auftrag wird abgegeben – bittet den Benutzer, sie zuerst zu bestätigen, und eine Aktion, die Dataverse mit einer eigenen Aktion ausführt, öffnet den Schließen-Dialog, wie unten beschrieben Closed Records . Die Karten eines geschlossenen Status werden nicht untereinander in eine andere Reihenfolge gelegt. Eine Tabelle ohne Übergänge bewegt sich frei: Eine Aufgabe, die auf Abgeschlossen verschoben wurde, wird abgeschlossen und wieder zurück, wieder geöffnet.
Jede Lane-Header in einem Editable Board hat einen Hinzufügen-Button, der einen neuen Datensatz öffnet, der bereits in dieser Lane ist, in der Form des Boards: die Seite Form (React: form) oder KanbanDefaultForm. Er wird nur für Nutzer angezeigt, die die Tabellen-Records erstellen und die Lane-Spalte setzen dürfen, und niemals in einer Lane mit geschlossenen Records, da ein offener Datensatz erstellt wird. Nach dem Speichern erscheint die Karte am oberen Rand ihrer Lane. Schalte sie mit AllowNew (React: allowNew) aus. Handle PrepareNewRecord (React: prepareNewRecord) aus, um dem neuen Datensatz vor dem Öffnen der Form mehr Werte zu geben: Er erhält den Datensatz, den bereits vorhandenen Wert der Lane und die Lane. Eine Symbolleiste kann auch eine Karte hinzufügen: CanCreate und NewAsync auf ( KanbanBoardContext React: canCreate and newCard) wird angegeben, ob eine Bahn eine neue Karte nimmt und ihre Form öffnet – ohne benannte Bahn, in der ersten, die eine nimmt.
React
Blazor
<KanbanBoard defaultViewId={allTasksViewId} laneColumn="statuscode" editable>
{/* Eine Werkzeugleiste, die eine Karte wie die Hinzufügen-Schaltfläche einer Lane hinzufügt */}
<KanbanBoardButton label="New task" icon={<AddRegular />} onClick={(board) => board.newCard()} />
</KanbanBoard>
<KanbanBoard DefaultViewId="allTasksViewId" LaneColumn="statuscode" Editable="true">
<ToolbarItems>
<!-- Eine Werkzeugleiste, die eine Karte wie die Hinzufügen-Schaltfläche einer Lane hinzufügt -->
<KanbanBoardButton Label="New task"
Icon="@(new Icons.Regular.Size20.Add())"
OnClick="@((KanbanBoardContext board) => board.NewAsync())" />
</ToolbarItems>
</KanbanBoard>
React
Blazor
{/* Jede Aufgabe, die auf dem Spielfeld hinzugefügt wird, beginnt mit hoher Priorität */}
<KanbanBoard
defaultViewId={allTasksViewId}
laneColumn="statuscode"
editable
prepareNewRecord={(record) => ({
...record,
properties: { ...record.properties, prioritycode: { $type: ColumnType.Choice, value: 2 } },
})}
/>
<!-- Jede Aufgabe, die auf dem Spielfeld hinzugefügt wird, beginnt mit hoher Priorität -->
<KanbanBoard DefaultViewId="allTasksViewId" LaneColumn="statuscode" Editable="true"
PrepareNewRecord="@(card => { card.Record["prioritycode"] = new ChoiceValue { Value = 2 }; return Task.CompletedTask; })" />
Abschlussrekorde
Auf einem Board aus Statusgründen öffnet eine Karte, die in eine Spur gelegt wird, in die Dataverse Datensätze mit einer eigenen Aktion schließt – eine Chance gewonnen oder verloren, ein Fall gelöst, ein Angebot gewonnen oder geschlossen, eine Bestellung erfüllt oder storniert – einen Dialog für den Statusgrund, die Startspur und die Schlussliste: den tatsächlichen Umsatz und das Abschlussdatum einer gewonnenen Gelegenheit; das Schließungsdatum einer verlorenen Chance und den Konkurrenten, an den der Nutzer Konkurrenten wählen kann; die Auflösung und abrechenbare Zeit eines Falls; das Schließungsdatum eines Angebots oder Auftrags; und eine Beschreibung. Bestätigt wird der Datensatz über Dataverse's eigene Nachricht geschlossen, wie zum Beispiel WinOpportunity oder CloseIncident; storniert, die Karte wird zurückgeführt. Zurück in eine offene Spur gezogen, wird eine Chance wieder geöffnet und ein Fall wieder aktiviert, sobald der Nutzer bestätigt hat. Versuchen Sie es in der Pipeline-Demo. Der gleiche Dialog befindet sich hinter den Schließen-Buttons im Formular eines Datensatzes, zum Beispiel WinOpportunityButton: siehe RecordContext.
Ein Abschluss wird als Änderung des Status des Datensatzes bewertet: Der Benutzer muss erlaubt sein, den Datensatz und seine Statusspalten zu ändern und auf den von ihm benannten Konkurrenten zu zeigen. Dataverse legt das Schließen unter dem Datensatz als eigenständige Aktivität ab (opportunityclose, incidentresolution, quoteclose, orderclose), die keinen Tabellenzugriff von Ihnen benötigt. Der Anwendungsbenutzer des Portals benötigt AppendTo in der Tabelle des Datensatzes, Erstellen und Anhängen bei Aktivitäten sowie für eine Gelegenheit AppendTo bei Konkurrenten: siehe Dataverse Connection.
React
Blazor
{/* Auf Gewonnen, Verloren oder Gelöst fallen gelassen, öffnet eine Karte das Schließen des Dialogs */}
<KanbanBoard defaultViewId={myOpportunitiesViewId} laneColumn="statuscode" editable />
<!-- Auf Gewonnen, Verloren oder Gelöst fallen gelassen, öffnet eine Karte das Schließen des Dialogs -->
<KanbanBoard DefaultViewId="myOpportunitiesViewId" LaneColumn="statuscode" Editable="true" />
Karten in die richtige Reihenfolge legen
Nennen Sie ein RankColumn (Reagieren: rankColumn) und die Nutzer ordnen die Karten jeder Bahn nach Hand an. Eine Bahn wird nach Rang sortiert, dann nach Sortierung der Ansicht, und eine Karte, die zwischen zwei anderen gefallen ist, erhält einen Rang zwischen ihren. Normalerweise ist dieser Rang alles, was ein Drop schreibt. Karten ohne Rang sortieren zuerst und werden nacheinander gewertet, wenn eine Karte unter ihnen oder knapp darunter liegt; eine Bahn, deren Reihen keinen Platz mehr zwischen zwei Karten haben, wird neu gewertet, in der angegebenen Reihenfolge. Diese Ränge werden mit dem Zug in einer Transaktion gespeichert. Eine Bahn mit mehr als 5.000 Karten kann nicht nach der Hand geordnet werden, noch kann eine Karte fallen gelassen werden, wo sie eine Rangfolge hätte, die der Nutzer nicht ändern darf. Ohne Rangspalte folgt eine Bahn der Sortierung der Ansicht, und eine Karte bewegt sich nur auf eine andere Bahn.
Die Rangspalte ist eine Dezimalspalte der Tabelle des Spielbretts, deren Reichweite negative Zahlen zulässt, da eine Karte, die über der ersten liegt, darunterliegt. Ihre Genauigkeit bestimmt, wie oft eine Bahn neu gewertet wird: Karten beginnen eine Million auseinander, und jeder Wurf zwischen zwei Hälften des Raums zwischen ihnen bekommt etwa fünfzig Drops an einer Stelle, bevor ihre Bahn erneut gewertet wird, und eine von keiner etwa zwanzig.
Handle SaveChange (React: onCardMove), um einen Zug auf deine eigene Weise zu speichern, anstelle des Bretts: durch einen eigenen Service, nachdem du den Nutzer gefragt hast, oder gar nicht. Es erhält ein KanbanCardMove: die Karten Record, die Bahnen, in denen sie kam From und ging To, sie Index ist da und das Rank, das Update das Spielfeld schrieb, und die OtherUpdates die in dieselbe Transaktion gehören, danach geschrieben – die Ränge anderer Karten oder, bei einer Karte, die eine geschlossene Bahn verlässt, ihren eigenen Rang, sobald ihr Status sie wieder geöffnet hat – und für eine Karte, die in eine Bahn gelegt wird, die sie schließt, bestätigte Close der Nutzer (React: close), um sie zu senden. Kehre zurück, true um die Karte dort zu behalten, wo sie abgeworfen wurde, oder false um sie zurückzulegen. Das Board liest nach einem Zug, den es nicht gespeichert hat, wieder nichts mehr, sodass eine Seite einen Zug nur auf der Seite behalten kann.
React
Blazor
<KanbanBoard
defaultViewId={openOpportunitiesViewId}
laneColumn="opportunityratingcode"
editable
// Gespeichert über den eigenen Dienst der Seite; falsch legt die Karte zurück.
onCardMove={(move) => pipeline.changeRating(move.record.id, move.to.key)}
/>
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="opportunityratingcode"
Editable="true"
SaveChange="SaveMoveAsync" />
@code {
// Gespeichert über den eigenen Dienst der Seite; falsch legt die Karte zurück.
private Task<bool> SaveMoveAsync(KanbanCardMove move)
=> _pipeline.ChangeRatingAsync(move.Record.Id, move.To.Key);
}
Tastatur-, Touchscreen- und Bildschirmleser
Jede Karte, die sich bewegen kann, hat eine ... Taste mit einem Menü "Bewegen zu" der Bahnen, zu denen sie gehen kann, die von der Tastatur aus genauso funktioniert, per Touch und mit einem Bildschirmleser. Eine Karte kann auch direkt von der Tastatur bewegt werden: fokussieren, Leertaste drücken, um sie aufzuheben, die Pfeiltasten, um sie auf eine andere Bahn oder an einen anderen Ort zu bringen, und erneut Leerstelle, um sie abzulegen. Auf einem Touchscreen wird eine Karte an ihrem Griff gezogen, sodass die Bahnen weiterhin unter einem Finger scrollen. Bildschirmleser hören jeden Zug – Karte in die Bahn verschoben – und einen Zug, der fehlschlägt.
Werkzeugleiste
Die Werkzeugleiste ist als Raster angelegt: der View-Picker links – oder der Title (React: title), wenn es nur eine Ansicht gibt – und rechts deine eigenen Steuerungen, Totalen, das Suchfeld, Filter, Aktualisieren und Einstellungen. Füge deine Steuerung mit ToolbarItems (React: die Unterseiten des Boards) hinzu. A KanbanBoardButton erhält die Tafel beim Anklicken: seine Tabelle, die angezeigte Ansicht, die Spuren in ihrer Reihenfolge und RefreshAsync (React: refresh) um jede Bahn erneut zu lesen.
React
Blazor
<KanbanBoard defaultViewId={openOpportunitiesViewId} laneColumn="opportunityratingcode">
{/* Dein eigener Knopf, reich dir das Brett, wenn du klickst */}
<KanbanBoardButton
label="Export"
icon={<ArrowDownloadRegular />}
onClick={(board) => exportAsync(board.viewId, board.lanes)}
/>
</KanbanBoard>
<KanbanBoard DefaultViewId="openOpportunitiesViewId" LaneColumn="opportunityratingcode">
<ToolbarItems>
<!-- Dein eigener Knopf, reich dir das Brett, wenn du klickst -->
<KanbanBoardButton Label="Export"
Icon="@(new Icons.Regular.Size20.ArrowDownload())"
OnClick="@((KanbanBoardContext board) => ExportAsync(board.ViewId, board.Lanes))" />
</ToolbarItems>
</KanbanBoard>
Ansichten, Suche und Filter
Eine Tafel zeigt die Datensätze einer Ansicht an – eine von Dataverse oder eine, die die Seite definiert – und ihre Tabelle ist die der Ansicht. DefaultViewId (React: defaultViewId) ist die Ansicht, auf der sie geöffnet wird, und ViewIds (React: viewIds) die anderen Ansichten, die der Viewpicker anbietet, derselben Tabelle. Das Suchfeld findet Karten, während eine Rastersuche Zeilen findet: vom Anfang des Suchwerts einer Suchspalte oder irgendwo nach einer führenden *Ansicht. Es schaut in die Spalten, die die Karten zeigen, nennt sie in seinem Tooltip und markiert die Übereinstimmungen auf den Karten. Schalten Sie es mit AllowSearch (React: allowSearch) aus.
Mit AllowFiltering (React: allowFiltering) bietet das Filtermenü der Symbolleiste Bearbeiten-Filter an, das Dialog, das die Filter-Schaltfläche eines Rasters öffnet, deren Filter die eigene Ansicht ersetzen, bis der Benutzer eine andere Ansicht auswählt. Sie ist standardmäßig deaktiviert, da der Benutzer alle Filter der Ansicht entfernen kann.
Mit AllowSavedViews (React: allowSavedViews), kann ein angemeldeter Nutzer das Spielbrett so speichern, wie er es arrangiert hat – die Ansicht mit seinen Filtern, den Feldern und der Sortierung der Karten, die Gesamtwerte der Lanes, die Karten, die jede Bahn lädt, und die eingeklappten oder versteckten Lanes – als eigene Ansicht wählen und seine Standardansicht wählen und die nicht verwendeten Karten aus dem Filtermenü ausblenden. Ohne ( SavedViewsKey React: savedViewsKey) teilt ein Board seine Ansichten mit den Rastern, Kalendern und Tafeln seiner Tabelle, die keine haben, wobei jedes sein eigenes Layout behält. Wie Ansichten gespeichert, geändert und geteilt werden, findet sich auf der Seite Gespeicherte Ansichten .
Eine Seite kann eigene Ansichten im Code mit CustomViewDefinitions (React: customViewDefinitions), den Ansichtsdefinitionen des Gitters definieren. Sie werden im Picker neben ViewIds angeboten, ohne dort aufgeführt zu sein, können eine benennen, DefaultViewId und ein Board kann diese allein haben. Jede wird von ihrem eigenen FetchXML innerhalb des Tabellenzugriffs des Benutzers gelesen und legt das Board so an: Es PageSize sind die Karten, die eine Lane lädt, eine Hidden Spalte und DisplayLabel versteckt oder betitelt ihr Kartenfeld, und es Aggregates sind die Summen der Lanes. Erstellen Sie die Liste einmal in einem Feld: Eine neue Liste startet das Board erneut.
<KanbanBoard CustomViewDefinitions="_views" LaneColumn="statuscode" Editable="true" />
@code {
// Die offenen Chancen: zehn Karten pro Lane, mit dem geschätzten Umsatz jeder Lane
private readonly List<ViewDefinition> _views =
[
new()
{
Id = new Guid("4c1e7a92-5d3b-4f8e-9a6c-2b0d8e4f1a37"),
TableName = "opportunity",
DisplayName = "Pipeline",
PageSize = 10,
FetchXml = """
<fetch>
<entity name="opportunity">
<attribute name="name" />
<attribute name="estimatedvalue" />
<attribute name="estimatedclosedate" />
<filter><condition attribute="statecode" operator="eq" value="0" /></filter>
</entity>
</fetch>
""",
Columns =
[
new ViewColumn { ColumnName = "name" },
new ViewColumn { ColumnName = "estimatedvalue", Aggregates = [new(QueryAggregate.Sum, "C0")] },
new ViewColumn { ColumnName = "estimatedclosedate" },
],
},
];
}
Seinen Platz in der URL behalten
Bennen Sie einen Abfrageparameter in PersistedStateQueryParameter (React: persistedStateQueryParameter), und das Board behält die Ansicht ausgewählt und die Lanes dort eingeklappt, sodass ein Nachladen oder ein geteilter Link sie so öffnet, wie sie gelassen wurde. Worauf sie ohnehin geöffnet wäre, wird ausgelassen. Auch die Suche bleibt mit IncludeSearchInPersistedState; sie wird standardmäßig weggelassen, da das, wonach Nutzer suchen, sensibel sein kann. Jede Änderung ersetzt den Browser-History-Eintrag, und beide Stapel schreiben denselben Wert, sodass ein Link auf dem einen das gleiche Board auf dem anderen öffnet.
Das Spielfeld wird mit den eigenen Steuerungen und Design-Tokens von Fluent UI gezeichnet, also folgt es deinem Thema, hell oder dunkel, und deiner Akzentfarbe, und der Punkt einer Spur übernimmt seine Option-Farbe aus Dataverse. Die Bahnen sind 280 Pixel breit, nebeneinander, und scrollen seitlich, wenn sie nicht passen; auf einem Handy nimmt jede den Großteil des Bildschirms ein und klickt ein Height . (React: height) legt die Höhe des Spielfelds fest, die Symbolleiste ist enthalten – standardmäßig 600 Pixel – und jede Bahn scrollt ihre Karten darin. Um es neu zu gestalten, tragen das Spielfeld, seine Bahnen und seine Karten eigene Klassen, darunter ppp-kanban, ppp-kanban-lane, ppp-kanban-lane-header und ppp-kanban-card; Class und Style (React: className und style) fügen Sie eigene hinzu.
Reagieren
Blazor
KanbanBoard Baureihe
Parameter
Name
Typ
Default
Beschreibung
AllowFiltering
bool
False
Ob der Benutzer die Filter der Ansicht aus aus dem Filtermenü ändern kann, wie auf einem Raster. Off by Standard: Der Benutzer kann alle Filter der Ansicht entfernen.
AllowNew
bool
True
Ob jede Bahn eines KanbanBoard.Editable Spielfelds eine neue Karte anbietet, mit einer Hinzufügen-Schaltfläche in der Header: Einer, den der Nutzer im Wert der Bahn erstellen kann – keine in einer Bahn geschlossener Karten, als eine Datensatz wird offen erstellt. Standardmäßig steht .true
AllowSavedViews
bool
False
Uns lässt angemeldete Nutzer das Board so speichern, wie sie es angeordnet haben – die Ansicht, die es mit ihrer Ansicht anzeigt Filter, die Felder und Sortierung seiner Karten, die Gesamtsummen der Lanes und die eingebrochenen oder versteckten Lanes – wie Eigene Ansichten, die im Ansichtswähler neben der Seite angeboten werden, und wählen Sie ihre Standardansicht Und verstecke die Ansichten, die sie nicht verwenden. Standardmäßig ausgeschaltet. Benötigt die Power Portals Pro Core-Lösungen gespeicherte Ansichtstabellen; ein interner Benutzer benötigt außerdem die gespeicherten Ansichten von Power Portals Pro Sicherheitsrolle.
AllowSearch
bool
True
Ob die Symbolleiste ein Suchfeld hat. Standardmäßig ist true.
CardImageColumn
string?
Eine Bildspalte, in der jede Standardkarte als Avatar neben ihrem Titel angezeigt wird, wie es die Karten eines Rasters tun.
CardTemplate
RenderFragment<KanbanCardContext>?
Der Inhalt jeder Karte, anstelle der Standardkarte: ihr Titel – die erste Spalte der Ansicht – und Die anderen Kolumnen der View unter ihren Titeln.
CustomViewDefinitions
List<ViewDefinition>?
Die Aufrufe, die die Seite definiert – die des Rasters Models.ViewDefinition– werden im Picker neben dem Picker angeboten KanbanBoard.ViewIds ohne dort aufgeführt zu sein; KanbanBoard.DefaultViewId darf einen nennen. A Brett kann diese allein haben. Jede wird von ihrem eigenen FetchXML gelesen und legt das Board so an, wie es angegeben ist. (Models.ViewDefinition)): Die Karten, die eine Bahn zu einem Zeitpunkt liest, die Karte ihrer Spalten, verborgene oder betitelte Felder sowie die Gesamtzahlen der Bahnen. Eine andere Tabelle als die des Brettes bleibt übrig Erstelle die Liste einmal – in einem Feld, nicht in der Auszeichnung – während eine neue Liste startet Brett nochmal.
DateLaneDrop
KanbanDateLaneDrop
ChangeDate
Was eine Karte, die in einer anderen Date-Spur platziert wird, bewirkt, wo das KanbanBoard.LaneColumn ein Date ist: Es nimmt den ersten Tag der Bahn (KanbanDateLaneDrop.ChangeDate, der Standard) — hält seine Tageszeit; kein Datum in Kein Datum; in Overdue wird keines gestrichen – oder Datumsspuren nehmen kein Datum Karte voneinander (KanbanDateLaneDrop.None). Keine Wirkung auf andere Lanes.
DateLaneOrder
KanbanDateLaneOrder
Rank
Wie die Karten der Datumsspuren angeordnet sind, wobei das ein KanbanBoard.LaneColumn Datum ist: durch die KanbanBoard.RankColumn da andere Spuren (KanbanDateLaneOrder.Rank, die default), oder nach dem Datum selbst (KanbanDateLaneOrder.Date) — eine Karte, die darunter platziert ist Ein anderer nimmt sich seinen Tag, hält seine eigene Zeit, einer, der am ersten Tag der Bahn am oberen Ende der Bahn fallen lässt, und Die Rangspalte wird nicht verwendet. Kein Einfluss auf andere Bahnen.
DateLanes
IReadOnlyList<KanbanDateLane>?
Die Spuren, die ein Datum KanbanBoard.LaneColumn angibt, in Datumsreihenfolge: Presets wie KanbanDateLane.Today, KanbanDateLane.ThisMonth oder KanbanDateLane.ThisFiscalQuarter – bei jeder heutigen Lesung im Browser des Nutzers ausgerechnet Zeitzone, die Woche der Kultur und das Geschäftsjahr der Organisation – oder eigene Spuren (DateTime,System.DateTime) und Ähnliches). Jeder dort beginnt, wo die vorherige endet, sodass jede Karte höchstens in einer Bahn landet; eine Karte, deren Datum keiner hält nicht auf dem Spielfeld. Ohne sie ist die Standard-Sieben (KanbanDateLane.Defaults): Überfällig, heute, morgen, diese Woche, nächste Woche, später und kein Datum. Eine Spur wird mit ihrem KanbanDateLane.Title, sonst vorgegebenen Namen betitelt in der Sprache des Nutzers, sonst ist es der Schlüssel. Eine neue Liste derselben Spuren – eine, die in der Reihe in der Markup – startet das Board nicht von vorne; andere Bahnen tun es.
DefaultViewId
Guid?
Die Ansicht, auf der sich das Spielbrett öffnet. Der Tisch des Spielbretts ist der der Ansicht.
Editable
bool
False
Ob Karten bewegt werden können. Eine Karte bewegt sich, wenn der Nutzer seinen Rekord und seine Bahn ändern kann Spalte, und – auf den Bahnen eines Statusgrundes – ermöglichen die Zustandsübergänge der Tabelle die Verschiebung (Models.KanbanLane)): Eine Lane bietet nur die Moves, die sie machen, und einen Drop, den sie machen Refuse geht zurück. Eine Karte, die in einer Bahn geworfen wird, in die ihre Übergänge sie schließen – eine Chance ist gewonnen oder Verloren, ein Fall ist gelöst, ein Angebot als Gewonnen oder Geschlossen, eine Bestellung als Erfüllt oder Storniert – geschlossen durch Dataverse' eigene Botschaft: Das Board fragt wie – der Grund, der der Spur von Anfang an, und Was der Close aufzeichnet. Jede andere Staatesänderung, die sie vornehmen – eine Wiedereröffnung einer Chance, Einen Fall stornieren, ein Angebot aktivieren – wird zuerst bestätigt. Standardmäßig ausgeschaltet.
EnforceLaneLimits
bool
False
Ob das Brett bei KanbanBoard.LaneLimits: eine volle Bahn keine Karte von einer anderen nimmt – ein Drop dorthin geht zurück, und Move to lässt ihn stehen – und bietet keine neue Karte an. Karten bewegen sich weiterhin innerhalb davon. Standardmäßig aus: Eine Spur über ihrem Limit ist nur markiert.
Form
Type?
Die Form, in der sich der Datensatz einer Karte öffnet: eine Komponente von Editoren, wie der Datensatzdialog eines Rasters angenommen wird. Ohne sie öffnet eine Karte die Seite ihres Datensatzes, auf der ihre Tabelle einen (KanbanBoard.ShowRecordLinks) enthält, sonst: Components.KanbanDefaultFormDie Säulen der View und die Lane-Säule.
FormLocation
DialogLocation
Center
Wo der Datensatz einer Karte geöffnet wird: zentriert oder in einem Seitenpanel links oder rechts. Standardeinstellung zentriert.
Height
string
600px
Höhe des gesamten Boards, inklusive Toolbar, als beliebige CSS-Länge. Standardwert 600px.
IncludeSearchInPersistedState
bool
False
Ob die Suche mit dem Rest des Bundesstaates fortgeführt wird. Hat ohne keine Auswirkung KanbanBoard.PersistedStateQueryParameter.
LaneAggregateFormats
IReadOnlyDictionary<string, string>?
Das Format, in dem die Summen jeder Spalte KanbanBoard.LaneAggregates sind, werden in ('N0') anhand ihres Namens angezeigt.
LaneAggregates
IReadOnlyDictionary<string, QueryAggregate>?
Die Summen, die jeder Bahn-Header anfangs zeigt – eine Summe, ein Durchschnitt, das wenigste, das meiste oder eine Spaltenzählung nach ihrem Namen. Der Benutzer ändert sie mit dem Totalen-Button und einem gespeicherten Die Sicht behält sie.
LaneColumn*
string
Die Spalte, aus der die Spuren stammen: eine Wahl, ein Statusgrund, ein Ja/Nein, eine Nachschlage- oder eine Datumsspalte, der Tabelle des Boards. Jede andere zeigt eine Nachricht anstelle der Tafel. Die Spuren einer Datumsspalte sind wenn es fällt, in Tagen der Zeitzone des Nutzers: Überfällig, Heute, Morgen, Diese Woche, Nächste Woche, Später und kein Datum, oder die Seite KanbanBoard.DateLanes (KanbanBoard.DateLaneDrop, KanbanBoard.DateLaneOrder).
LaneLimits
IReadOnlyDictionary<string, int>?
Die meisten Karten, die jede Bahn halten sollte, durch KanbanLane.Key: den Kopf einer begrenzten Bahn zeigt seinen Count gegen sein Limit an ('4 / 5') und markiert es, wenn die Bahn mehr hält. Die Der Count ist der gesamte Lane, egal wie die Suche und die Filter des Nutzers zeigen. Eine Lane ohne Namen Es gibt keine Grenzen.
Lanes
IEnumerable<string>?
Welche Bahnen das Board anzeigt und in welcher Reihenfolge, durch KanbanLane.Key: eine Option Wert ('1'), Ja/Nein, '1' und '0', die ID eines Datensatzes, der Schlüssel einer Datumsspur (KanbanDateLane.Key: 'überfällig', 'heute', ...), oder einen leeren Schlüssel für die Kartenlane ohne Wert. Jede Lane, in Dataverse's Reihenfolge, wenn sie nicht gegeben wird. Für Datums-Lanes Es wählt unter den KanbanBoard.DateLanes, deren Tage so bleiben, wie sie sie definieren.
LookupLanes
IEnumerable<LookupValue>?
Eine Abfrage der Lanes: eine für jeden Datensatz, in der angegebenen Reihenfolge. Ohne sie zeigt das Board eine Lane an Für jeden Datensatz heißt die Ansicht die Karten.
PageSize
int
20
Die Karten, die eine Bahn auf einmal liest; die nächste kommt mit ihrem Laden mehr. Standardmäßig steht 20.
PersistedStateQueryParameter
string?
Der Name eines URL-Abfrageparameters, um den Zustand des Boards zu behalten – die gewählte Ansicht, die Lanes zusammengebrochen und (mit KanbanBoard.IncludeSearchInPersistedState) der Suche – also ein Nachladen oder ein Der Link öffnet es dort, wo es gelassen wurde. Jede Änderung ersetzt den Verlaufseintrag des Browsers.
PrepareNewRecord
Func<KanbanNewRecord, Task>?
Bereitet den Rekord einer neuen Karte vor, bevor ihr Formular geöffnet wird – über den Hinzufügen-Button einer Bahn oder Models.KanbanLane) — sobald das Board ihm den Wert der Bahn gegeben hat: die Host setzt Standardeinstellungen über den Indexer des Datensatzes (Karte. Datensatz['column'] = Wert), und Jeder von ihm gesetzte Wert wird mit dem Datensatz gespeichert. Das Formular öffnet sich nicht, wenn es geworfen wird, und der Fehler wird als das Is eines fehlgeschlagenen Erstelltes angezeigt.
RankColumn
string?
Eine Dezimalspalte, in der das Feld die Reihenfolge der Karten nach Hand führt: jede Bahn wird danach sortiert, und Eine Karte, die zwischen zwei anderen fallen gelassen wird, erhält einen Rang zwischen ihren. Ohne diese folgen die Karten die Ansicht sortiert, und eine Karte bewegt sich nur auf eine andere Bahn.
SaveChange
Func<KanbanCardMove, Task<bool>>?
Speichert einen Zug anstelle des Brettes; Rückkehren false legt die Karte zurück, als wenn der Rettungswurf abgelehnt wird. Ohne ihn speichert das Spielfeld den Zug selbst. Ein Zug, der den Zug schließt. Die Karte wird ausgegeben, sobald der Nutzer angegeben hat, wie, mit der Aufforderung zum Einsenden KanbanCardMove.Close; einer, der einen Zustand ändert, den die Übergänge der Tabelle bestimmen, sobald der Nutzer es bestätigt hat.
SavedViewsKey
string?
Er nennt dieses Board unter den Steuerungen seiner Tabelle, sodass die Ansichten darauf und die des Benutzers gespeichert sind Standard- und versteckte Ansichten sind eigene. Ohne eine teilt das Board seine Ansichten mit jedem Raster, Kalender und Tafel des Tisches, der keine hat. Buchstaben, Ziffern, -, _ und ..
ShowEmptyLanes
bool
True
Ob eine Bahn ohne Karten angezeigt wird. Standardmäßig gilt true.
ShowRecordLinks
bool
True
Ob die Karten auf die Seiten ihrer Datensätze verlinken, die bei AddRecordPage registriert sind, als Raster Zeilen und Nachschlagefunktionen tun das. Dabei hat die Tabelle des Boards eine Seite und das Board bekommt kein Nein KanbanBoard.Form, der Titel einer Karte verlinkt auf die Seite ihres Datensatzes, und das Öffnen der Karte führt dorthin; Eine Abfrage einer Karte führt zu der Seite ihres Datensatzes, auf der diese Tabelle eine hat. Eine Tabelle ohne Seite öffnet seine Karten im Dialog des Spielbretts. Im Dialog wird immer eine neue Karte erstellt. Standard true.
SignInUrl
string
Account/Login
Wenn ein Benutzer, der nicht angemeldet ist, aus dem Menü der gespeicherten Ansichten zum Anmelden geschickt wird; er kommt zurück zu dieser Seite. Relativ zur Basisadresse der App. Standardmäßig steht Konto/Login.
Title
string?
Die Überschrift der Tafel, die anstelle des Ansichtswählers angezeigt wird, wenn es nur eine Ansicht gibt.
ToolbarItems
RenderFragment?
Steuerungen für die Werkzeugleiste – Components.KanbanBoardButtons oder jede andere Markierung – vor dem Suchfeld.
ViewIds
IEnumerable<Guid>?
Andere Ansichten derselben Tabelle, zu denen der Benutzer im View-Picker wechseln kann.
ViewSort
ViewSort
NameAscending
Die Reihenfolge der Ansichten im Picker. Standardmäßig gilt ViewSort.NameAscending, als Gitter.
Name:AllowFiltering
Typ:bool
Default:False
Beschreibung:Ob der Benutzer die Filter der Ansicht aus aus dem Filtermenü ändern kann, wie auf einem Raster. Off by Standard: Der Benutzer kann alle Filter der Ansicht entfernen.
Name:AllowNew
Typ:bool
Default:True
Beschreibung:Ob jede Bahn eines KanbanBoard.Editable Spielfelds eine neue Karte anbietet, mit einer Hinzufügen-Schaltfläche in der Header: Einer, den der Nutzer im Wert der Bahn erstellen kann – keine in einer Bahn geschlossener Karten, als eine Datensatz wird offen erstellt. Standardmäßig steht .true
Name:AllowSavedViews
Typ:bool
Default:False
Beschreibung:Uns lässt angemeldete Nutzer das Board so speichern, wie sie es angeordnet haben – die Ansicht, die es mit ihrer Ansicht anzeigt Filter, die Felder und Sortierung seiner Karten, die Gesamtsummen der Lanes und die eingebrochenen oder versteckten Lanes – wie Eigene Ansichten, die im Ansichtswähler neben der Seite angeboten werden, und wählen Sie ihre Standardansicht Und verstecke die Ansichten, die sie nicht verwenden. Standardmäßig ausgeschaltet. Benötigt die Power Portals Pro Core-Lösungen gespeicherte Ansichtstabellen; ein interner Benutzer benötigt außerdem die gespeicherten Ansichten von Power Portals Pro Sicherheitsrolle.
Name:AllowSearch
Typ:bool
Default:True
Beschreibung:Ob die Symbolleiste ein Suchfeld hat. Standardmäßig ist true.
Name:CardImageColumn
Typ:string?
Beschreibung:Eine Bildspalte, in der jede Standardkarte als Avatar neben ihrem Titel angezeigt wird, wie es die Karten eines Rasters tun.
Name:CardTemplate
Typ:RenderFragment<KanbanCardContext>?
Beschreibung:Der Inhalt jeder Karte, anstelle der Standardkarte: ihr Titel – die erste Spalte der Ansicht – und Die anderen Kolumnen der View unter ihren Titeln.
Name:CustomViewDefinitions
Typ:List<ViewDefinition>?
Beschreibung:Die Aufrufe, die die Seite definiert – die des Rasters Models.ViewDefinition– werden im Picker neben dem Picker angeboten KanbanBoard.ViewIds ohne dort aufgeführt zu sein; KanbanBoard.DefaultViewId darf einen nennen. A Brett kann diese allein haben. Jede wird von ihrem eigenen FetchXML gelesen und legt das Board so an, wie es angegeben ist. (Models.ViewDefinition)): Die Karten, die eine Bahn zu einem Zeitpunkt liest, die Karte ihrer Spalten, verborgene oder betitelte Felder sowie die Gesamtzahlen der Bahnen. Eine andere Tabelle als die des Brettes bleibt übrig Erstelle die Liste einmal – in einem Feld, nicht in der Auszeichnung – während eine neue Liste startet Brett nochmal.
Name:DateLaneDrop
Typ:KanbanDateLaneDrop
Default:ChangeDate
Beschreibung:Was eine Karte, die in einer anderen Date-Spur platziert wird, bewirkt, wo das KanbanBoard.LaneColumn ein Date ist: Es nimmt den ersten Tag der Bahn (KanbanDateLaneDrop.ChangeDate, der Standard) — hält seine Tageszeit; kein Datum in Kein Datum; in Overdue wird keines gestrichen – oder Datumsspuren nehmen kein Datum Karte voneinander (KanbanDateLaneDrop.None). Keine Wirkung auf andere Lanes.
Name:DateLaneOrder
Typ:KanbanDateLaneOrder
Default:Rank
Beschreibung:Wie die Karten der Datumsspuren angeordnet sind, wobei das ein KanbanBoard.LaneColumn Datum ist: durch die KanbanBoard.RankColumn da andere Spuren (KanbanDateLaneOrder.Rank, die default), oder nach dem Datum selbst (KanbanDateLaneOrder.Date) — eine Karte, die darunter platziert ist Ein anderer nimmt sich seinen Tag, hält seine eigene Zeit, einer, der am ersten Tag der Bahn am oberen Ende der Bahn fallen lässt, und Die Rangspalte wird nicht verwendet. Kein Einfluss auf andere Bahnen.
Name:DateLanes
Typ:IReadOnlyList<KanbanDateLane>?
Beschreibung:Die Spuren, die ein Datum KanbanBoard.LaneColumn angibt, in Datumsreihenfolge: Presets wie KanbanDateLane.Today, KanbanDateLane.ThisMonth oder KanbanDateLane.ThisFiscalQuarter – bei jeder heutigen Lesung im Browser des Nutzers ausgerechnet Zeitzone, die Woche der Kultur und das Geschäftsjahr der Organisation – oder eigene Spuren (DateTime,System.DateTime) und Ähnliches). Jeder dort beginnt, wo die vorherige endet, sodass jede Karte höchstens in einer Bahn landet; eine Karte, deren Datum keiner hält nicht auf dem Spielfeld. Ohne sie ist die Standard-Sieben (KanbanDateLane.Defaults): Überfällig, heute, morgen, diese Woche, nächste Woche, später und kein Datum. Eine Spur wird mit ihrem KanbanDateLane.Title, sonst vorgegebenen Namen betitelt in der Sprache des Nutzers, sonst ist es der Schlüssel. Eine neue Liste derselben Spuren – eine, die in der Reihe in der Markup – startet das Board nicht von vorne; andere Bahnen tun es.
Name:DefaultViewId
Typ:Guid?
Beschreibung:Die Ansicht, auf der sich das Spielbrett öffnet. Der Tisch des Spielbretts ist der der Ansicht.
Name:Editable
Typ:bool
Default:False
Beschreibung:Ob Karten bewegt werden können. Eine Karte bewegt sich, wenn der Nutzer seinen Rekord und seine Bahn ändern kann Spalte, und – auf den Bahnen eines Statusgrundes – ermöglichen die Zustandsübergänge der Tabelle die Verschiebung (Models.KanbanLane)): Eine Lane bietet nur die Moves, die sie machen, und einen Drop, den sie machen Refuse geht zurück. Eine Karte, die in einer Bahn geworfen wird, in die ihre Übergänge sie schließen – eine Chance ist gewonnen oder Verloren, ein Fall ist gelöst, ein Angebot als Gewonnen oder Geschlossen, eine Bestellung als Erfüllt oder Storniert – geschlossen durch Dataverse' eigene Botschaft: Das Board fragt wie – der Grund, der der Spur von Anfang an, und Was der Close aufzeichnet. Jede andere Staatesänderung, die sie vornehmen – eine Wiedereröffnung einer Chance, Einen Fall stornieren, ein Angebot aktivieren – wird zuerst bestätigt. Standardmäßig ausgeschaltet.
Name:EnforceLaneLimits
Typ:bool
Default:False
Beschreibung:Ob das Brett bei KanbanBoard.LaneLimits: eine volle Bahn keine Karte von einer anderen nimmt – ein Drop dorthin geht zurück, und Move to lässt ihn stehen – und bietet keine neue Karte an. Karten bewegen sich weiterhin innerhalb davon. Standardmäßig aus: Eine Spur über ihrem Limit ist nur markiert.
Name:Form
Typ:Type?
Beschreibung:Die Form, in der sich der Datensatz einer Karte öffnet: eine Komponente von Editoren, wie der Datensatzdialog eines Rasters angenommen wird. Ohne sie öffnet eine Karte die Seite ihres Datensatzes, auf der ihre Tabelle einen (KanbanBoard.ShowRecordLinks) enthält, sonst: Components.KanbanDefaultFormDie Säulen der View und die Lane-Säule.
Name:FormLocation
Typ:DialogLocation
Default:Center
Beschreibung:Wo der Datensatz einer Karte geöffnet wird: zentriert oder in einem Seitenpanel links oder rechts. Standardeinstellung zentriert.
Name:Height
Typ:string
Default:600px
Beschreibung:Höhe des gesamten Boards, inklusive Toolbar, als beliebige CSS-Länge. Standardwert 600px.
Name:IncludeSearchInPersistedState
Typ:bool
Default:False
Beschreibung:Ob die Suche mit dem Rest des Bundesstaates fortgeführt wird. Hat ohne keine Auswirkung KanbanBoard.PersistedStateQueryParameter.
Name:LaneAggregateFormats
Typ:IReadOnlyDictionary<string, string>?
Beschreibung:Das Format, in dem die Summen jeder Spalte KanbanBoard.LaneAggregates sind, werden in ('N0') anhand ihres Namens angezeigt.
Name:LaneAggregates
Typ:IReadOnlyDictionary<string, QueryAggregate>?
Beschreibung:Die Summen, die jeder Bahn-Header anfangs zeigt – eine Summe, ein Durchschnitt, das wenigste, das meiste oder eine Spaltenzählung nach ihrem Namen. Der Benutzer ändert sie mit dem Totalen-Button und einem gespeicherten Die Sicht behält sie.
Name:LaneColumn*
Typ:string
Beschreibung:Die Spalte, aus der die Spuren stammen: eine Wahl, ein Statusgrund, ein Ja/Nein, eine Nachschlage- oder eine Datumsspalte, der Tabelle des Boards. Jede andere zeigt eine Nachricht anstelle der Tafel. Die Spuren einer Datumsspalte sind wenn es fällt, in Tagen der Zeitzone des Nutzers: Überfällig, Heute, Morgen, Diese Woche, Nächste Woche, Später und kein Datum, oder die Seite KanbanBoard.DateLanes (KanbanBoard.DateLaneDrop, KanbanBoard.DateLaneOrder).
Name:LaneLimits
Typ:IReadOnlyDictionary<string, int>?
Beschreibung:Die meisten Karten, die jede Bahn halten sollte, durch KanbanLane.Key: den Kopf einer begrenzten Bahn zeigt seinen Count gegen sein Limit an ('4 / 5') und markiert es, wenn die Bahn mehr hält. Die Der Count ist der gesamte Lane, egal wie die Suche und die Filter des Nutzers zeigen. Eine Lane ohne Namen Es gibt keine Grenzen.
Name:Lanes
Typ:IEnumerable<string>?
Beschreibung:Welche Bahnen das Board anzeigt und in welcher Reihenfolge, durch KanbanLane.Key: eine Option Wert ('1'), Ja/Nein, '1' und '0', die ID eines Datensatzes, der Schlüssel einer Datumsspur (KanbanDateLane.Key: 'überfällig', 'heute', ...), oder einen leeren Schlüssel für die Kartenlane ohne Wert. Jede Lane, in Dataverse's Reihenfolge, wenn sie nicht gegeben wird. Für Datums-Lanes Es wählt unter den KanbanBoard.DateLanes, deren Tage so bleiben, wie sie sie definieren.
Name:LookupLanes
Typ:IEnumerable<LookupValue>?
Beschreibung:Eine Abfrage der Lanes: eine für jeden Datensatz, in der angegebenen Reihenfolge. Ohne sie zeigt das Board eine Lane an Für jeden Datensatz heißt die Ansicht die Karten.
Name:PageSize
Typ:int
Default:20
Beschreibung:Die Karten, die eine Bahn auf einmal liest; die nächste kommt mit ihrem Laden mehr. Standardmäßig steht 20.
Name:PersistedStateQueryParameter
Typ:string?
Beschreibung:Der Name eines URL-Abfrageparameters, um den Zustand des Boards zu behalten – die gewählte Ansicht, die Lanes zusammengebrochen und (mit KanbanBoard.IncludeSearchInPersistedState) der Suche – also ein Nachladen oder ein Der Link öffnet es dort, wo es gelassen wurde. Jede Änderung ersetzt den Verlaufseintrag des Browsers.
Name:PrepareNewRecord
Typ:Func<KanbanNewRecord, Task>?
Beschreibung:Bereitet den Rekord einer neuen Karte vor, bevor ihr Formular geöffnet wird – über den Hinzufügen-Button einer Bahn oder Models.KanbanLane) — sobald das Board ihm den Wert der Bahn gegeben hat: die Host setzt Standardeinstellungen über den Indexer des Datensatzes (Karte. Datensatz['column'] = Wert), und Jeder von ihm gesetzte Wert wird mit dem Datensatz gespeichert. Das Formular öffnet sich nicht, wenn es geworfen wird, und der Fehler wird als das Is eines fehlgeschlagenen Erstelltes angezeigt.
Name:RankColumn
Typ:string?
Beschreibung:Eine Dezimalspalte, in der das Feld die Reihenfolge der Karten nach Hand führt: jede Bahn wird danach sortiert, und Eine Karte, die zwischen zwei anderen fallen gelassen wird, erhält einen Rang zwischen ihren. Ohne diese folgen die Karten die Ansicht sortiert, und eine Karte bewegt sich nur auf eine andere Bahn.
Name:SaveChange
Typ:Func<KanbanCardMove, Task<bool>>?
Beschreibung:Speichert einen Zug anstelle des Brettes; Rückkehren false legt die Karte zurück, als wenn der Rettungswurf abgelehnt wird. Ohne ihn speichert das Spielfeld den Zug selbst. Ein Zug, der den Zug schließt. Die Karte wird ausgegeben, sobald der Nutzer angegeben hat, wie, mit der Aufforderung zum Einsenden KanbanCardMove.Close; einer, der einen Zustand ändert, den die Übergänge der Tabelle bestimmen, sobald der Nutzer es bestätigt hat.
Name:SavedViewsKey
Typ:string?
Beschreibung:Er nennt dieses Board unter den Steuerungen seiner Tabelle, sodass die Ansichten darauf und die des Benutzers gespeichert sind Standard- und versteckte Ansichten sind eigene. Ohne eine teilt das Board seine Ansichten mit jedem Raster, Kalender und Tafel des Tisches, der keine hat. Buchstaben, Ziffern, -, _ und ..
Name:ShowEmptyLanes
Typ:bool
Default:True
Beschreibung:Ob eine Bahn ohne Karten angezeigt wird. Standardmäßig gilt true.
Name:ShowRecordLinks
Typ:bool
Default:True
Beschreibung:Ob die Karten auf die Seiten ihrer Datensätze verlinken, die bei AddRecordPage registriert sind, als Raster Zeilen und Nachschlagefunktionen tun das. Dabei hat die Tabelle des Boards eine Seite und das Board bekommt kein Nein KanbanBoard.Form, der Titel einer Karte verlinkt auf die Seite ihres Datensatzes, und das Öffnen der Karte führt dorthin; Eine Abfrage einer Karte führt zu der Seite ihres Datensatzes, auf der diese Tabelle eine hat. Eine Tabelle ohne Seite öffnet seine Karten im Dialog des Spielbretts. Im Dialog wird immer eine neue Karte erstellt. Standard true.
Name:SignInUrl
Typ:string
Default:Account/Login
Beschreibung:Wenn ein Benutzer, der nicht angemeldet ist, aus dem Menü der gespeicherten Ansichten zum Anmelden geschickt wird; er kommt zurück zu dieser Seite. Relativ zur Basisadresse der App. Standardmäßig steht Konto/Login.
Name:Title
Typ:string?
Beschreibung:Die Überschrift der Tafel, die anstelle des Ansichtswählers angezeigt wird, wenn es nur eine Ansicht gibt.
Name:ToolbarItems
Typ:RenderFragment?
Beschreibung:Steuerungen für die Werkzeugleiste – Components.KanbanBoardButtons oder jede andere Markierung – vor dem Suchfeld.
Name:ViewIds
Typ:IEnumerable<Guid>?
Beschreibung:Andere Ansichten derselben Tabelle, zu denen der Benutzer im View-Picker wechseln kann.
Name:ViewSort
Typ:ViewSort
Default:NameAscending
Beschreibung:Die Reihenfolge der Ansichten im Picker. Standardmäßig gilt ViewSort.NameAscending, als Gitter.
Methoden
Name
Parameter
Typ
Beschreibung
RefreshAsync
Task
Liest jede angezeigte Spur erneut.
Name:RefreshAsync
Typ:Task
Beschreibung:Liest jede angezeigte Spur erneut.
Rank Date
Apply beginnt mit einem Filter in den folgenden Spalten:
E-Mail
Kontakt
Konto
Potenzieller Kunde
Thema
Verwendet Zahlenvergleiche in den folgenden Spalten:
Geschätzte Einnahmen
Wahrscheinlichkeit
Verwendet Datums- oder Jahresvergleiche in den folgenden Spalten:
Geschätztes Abschlussdatum
Apply beginnt mit einem Filter in den folgenden Spalten:
E-Mail
Kontakt
Konto
Potenzieller Kunde
Thema
Verwendet Zahlenvergleiche in den folgenden Spalten:
Geschätzte Einnahmen
Wahrscheinlichkeit
Verwendet Datums- oder Jahresvergleiche in den folgenden Spalten:
Geschätztes Abschlussdatum
AktualisierenChangeDate None Center Right Left Default NameAscending NameDescending
Apply beginnt mit einem Filter in den folgenden Spalten:
Besitzer
Bezüglich
Priorität
Statusgrund
Thema
Verwendet Datums- oder Jahresvergleiche in den folgenden Spalten:
Geburtstermin
Aktualisieren
Apply beginnt mit einem Filter in den folgenden Spalten:
Besitzer
Bezüglich
Priorität
Statusgrund
Thema
Verwendet Datums- oder Jahresvergleiche in den folgenden Spalten:
Geburtstermin
Ein unbearbeiteter Fehler ist aufgetreten.
Nachladen🗙