Ele KanbanBoard mostra os registros de uma tabela como cartas em faixas lado a lado, uma faixa para cada valor de uma coluna: a avaliação de uma oportunidade, o motivo do status da tarefa, a conta à qual pertence um registro. Cada faixa é lida separadamente por meio de uma visualização, página por vez, com a mesma consulta e segurança de uma grade, e mostra sua contagem e totais em seu cabeçalho. No Editable tabuleiro, uma carta se move para outra faixa arrastando-a, do teclado ou pelo menu Mover para o menu, e o movimento é salvo imediatamente; com uma coluna de classificação, as cartas também são ordenadas à mão. Ela é desenhada no tema da sua interface Fluente.
As oportunidades abertas dos dados de amostra da demonstração, através da própria visualização Open Opportunities do Dataverse: uma faixa para cada avaliação, com a contagem da faixa e a receita estimada em seu cabeçalho. Lanes Deixa de fora a faixa de oportunidades sem uma classificação. A demo do Kanban Board mostra o mesmo quadro com movimentos, visualizações, filtros e visualizações salvas.
Exemplo de reação
Exemplo de Blazor
React TypeScript
Razor
LaneColumn (Reagir: laneColumn) nomeia a coluna da tabela da vista de onde vêm as faixas. Uma escolha indica uma faixa para cada uma de suas opções, um motivo de status para cada motivo, uma coluna Sim/Não para cada um de seus dois valores, uma consulta para cada registro nomeado, e uma data das faixas em que ela cai, conforme descreve o site Date lanes abaixo. Qualquer outra coluna mostra uma mensagem no lugar do tabuleiro. As faixas seguem a ordem do Dataverse e deixam de fora opções ocultas, e a cor de uma opção aparece como um ponto ao lado do nome da sua faixa. Uma coluna que um registro pode deixar vazia adiciona uma última faixa, (Sem valor), para as cartas sem uma.
Lanes (Reagir: lanes) escolhe quais faixas são mostradas e em que ordem, por chave: o valor de uma opção, 1 e 0 para Sim e Não, o id de um registro, ou uma chave vazia para a faixa sem valor. As faixas de uma consulta são os registros que as cartas da visualização nomeiam, lidas em uma consulta agrupada; nome-as em LookupLanes (Reagir: lookupLanes) para fixá-las e sua ordem, uma faixa sem cartas incluídas.
React
Blazor
{/* Tarefas de Não Iniciadas a Concluídas, sem Adiadas e Canceladas. */}
<KanbanBoard defaultViewId={allTasksViewId} laneColumn="statuscode" lanes={['2', '3', '4', '5']} />
{/* Uma faixa para cada conta-chave, na ordem dada. */}
<KanbanBoard defaultViewId={openOpportunitiesViewId} laneColumn="parentaccountid" lookupLanes={keyAccounts} />
<!-- Tarefas de Não Iniciadas a Concluídas, sem Adiadas e Canceladas. -->
<KanbanBoard DefaultViewId="allTasksViewId"
LaneColumn="statuscode"
Lanes="@(["2", "3", "4", "5"])" />
<!-- Uma faixa para cada conta-chave, na ordem dada. -->
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="parentaccountid"
LookupLanes="@keyAccounts" />
Uma faixa sem cartas é mostrada, então uma carta pode ser deixada nela. Defina ShowEmptyLanes (Reagir: showEmptyLanes) para false ocultá-la assim que sua contagem for conhecida. Os usuários podem colapsar uma faixa em uma faixa estreita com seu nome e contar com o botão no cabeçalho, e esconder as faixas no menu Filtro da barra de ferramentas, que as lista em Mostrar.
Uma coluna de data mostra as faixas de quando sua data cai, contadas em dias do próprio fuso horário do usuário, com a semana começando no primeiro dia da língua dele, e calculadas novamente cada vez que o quadro lê suas faixas. Sem nenhuma nomeada, elas são Atrasadas, Hoje, Amanhã, Esta semana — do dia depois de amanhã até o fim da semana, então vazias perto do fim da semana — Próxima semana, Até Tarde e Sem data.
DateLanes(Reagir: dateLanes) nomeia as faixas em vez disso, em ordem de data. Um preset estabelece uma faixa a partir da data atual: Yesterday, Today e Tomorrow; LastWeek, ThisWeek e NextWeek; LastMonth; NextMonthThisMonth e ; os trimestres e anos do calendário, como ThisCalendarQuarter e NextCalendarYear, e os fiscais, como ThisFiscalQuarter e LastFiscalYear, que seguem o ano fiscal da organização conforme o Dataverse o mantém; Overdue, antes de hoje; Earlier e Later, que tomam o que ocorre antes e depois das faixas ao redor; e NoDate. Uma faixa sua conta dias exatos, ou dias contados dos períodos de hoje, sob um título próprio: Between, Before e Starting (Reagir: between, before e starting). Um preset também recebe um título próprio. Experimente na demonstração de datas de fechamento.
Cada carta cai em uma faixa, pois uma faixa começa não antes de onde a anterior termina: listada após ThisWeek, ThisMonth segura o restante do mês, e uma faixa que as anteriores já cobrem mostra vazia e não aceita carta. Uma data em que nenhuma faixa vale — entre duas faixas de dias exatos — coloca sua carta em nenhuma, então comece com Earlier e termine com Later para manter todas as cartas.
React
Blazor
{/* Trimestres fiscais de hoje, e tudo antes e depois deles */}
<KanbanBoard
defaultViewId={openOpportunitiesViewId}
laneColumn="estimatedclosedate"
dateLanes={[
KanbanDateLane.Earlier,
KanbanDateLane.LastFiscalQuarter,
KanbanDateLane.ThisFiscalQuarter,
KanbanDateLane.NextFiscalQuarter,
KanbanDateLane.Later,
KanbanDateLane.NoDate,
]}
/>
{/* Pistas de dias exatos com títulos próprios: antes, durante e depois de uma semana de lançamento */}
<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,
]}
/>
<!-- Trimestres fiscais de hoje, e tudo antes e depois deles -->
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="estimatedclosedate"
DateLanes="@([
KanbanDateLane.Earlier,
KanbanDateLane.LastFiscalQuarter,
KanbanDateLane.ThisFiscalQuarter,
KanbanDateLane.NextFiscalQuarter,
KanbanDateLane.Later,
KanbanDateLane.NoDate,
])" />
<!-- Pistas de dias exatos com títulos próprios: antes, durante e depois de uma semana de lançamento -->
<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,
])" />
Uma carta movida para outra faixa de data recebe o primeiro dia dessa faixa, mantendo seu horário — uma faixa atrás de hoje também, o que lhe dá uma data passada — e movida para Sem data, perde sua data. Uma faixa sem um primeiro dia, como Atrasado, um primeiro Antes ou uma faixa vazia, não aceita carta. Defina DateLaneDrop (Reaja ) dateLaneDrope None as faixas não recebem cartas umas das outras: elas só aparecem quando cartas caem.
DateLaneOrder (Reagir: dateLaneOrder) ordena as cartas de uma lane de data. Rank , o padrão, ordena pela coluna de valor, como todas as outras lane: uma carta movida dentro de sua lane muda seu valor sozinha. Date ordena por data, sem coluna de valor: uma carta caída abaixo de outra fica no dia daquela carta, mantendo seu próprio tempo, e uma caída no topo fica no primeiro dia da lane; cartas do mesmo dia permanecem na ordem dos tempos. Tente na demo de datas de vencimento.
React
Blazor
{/* Tarefas por quando vencem, cada faixa em ordem de vencimento */}
<KanbanBoard
defaultViewId={openTasksViewId}
laneColumn="scheduledend"
dateLaneOrder={KanbanDateLaneOrder.Date}
editable
/>
<!-- Tarefas por quando vencem, cada faixa em ordem de vencimento -->
<KanbanBoard DefaultViewId="openTasksViewId"
LaneColumn="scheduledend"
DateLaneOrder="KanbanDateLaneOrder.Date"
Editable="true" />
Contagens e totais
O cabeçalho de cada faixa mostra quantas cartas ela possui — 5000+ além de 5.000 — e os totais nomeados em LaneAggregates (Reagir: laneAggregates): a soma, média, menor ou maior parte de um número, coluna de dinheiro ou data, ou uma contagem de qualquer coluna, sobre cada carta da faixa, não apenas aquelas carregadas. LaneAggregateFormats (Reagir: laneAggregateFormats) dá um formato para as figuras de cada coluna, como C0 ou N1. Esses são os totais com que o tabuleiro começa: o botão Totais permite que os usuários escolham suas próprias colunas que as cartas mostram, e uma visualização salva as mantém. Contagens e totais são lidos novamente após cada movimento salvo pelo tabuleiro.
LaneLimits (Reagir: laneLimits) dá às rotas, por chave, o maior número de cartas que elas devem ter. O cabeçalho de uma rota limitada mostra sua contagem contra o limite, como 7/5, marcada após a contagem passar. A contagem é de todas as cartas da rota, o que o usuário procurar ou filtrar. Um limite só avisa a menos que EnforceLaneLimits (Reagir: enforceLaneLimits) seja definido: aí uma rota cheia não pega nenhuma carta de outra, não é oferecida em Mover para e não tem botão Adicionar. É regra do tabuleiro, não do servidor: mantenha um limite para cada forma como um registro é salvo com um interceptor.
React
Blazor
{/* No máximo, três tarefas em andamento ao mesmo tempo */}
<KanbanBoard
defaultViewId={allTasksViewId}
laneColumn="statuscode"
laneLimits={{ '3': 3 }}
enforceLaneLimits
editable
/>
<!-- No máximo, três tarefas em andamento ao mesmo tempo -->
<KanbanBoard DefaultViewId="allTasksViewId"
LaneColumn="statuscode"
LaneLimits="@(new Dictionary<string, int> { ["3"] = 3 })"
EnforceLaneLimits="true"
Editable="true" />
Cartas
Uma carta mostra a primeira coluna da vista como seu título e as outras colunas da vista sob seus títulos, como as cartas da grade, deixando de fora a coluna da faixa e a coluna de rank. CardImageColumn (Reagir: cardImageColumn) adiciona uma coluna de imagem como avatar ao lado do título. Cada faixa carrega PageSize (Reagir: pageSize) cartas por vez, 20 por padrão, com Carregar mais em seu base. Nas Configurações, os usuários mudam os campos que as cartas mostram, como as cartas de uma faixa são ordenadas e quantas cada faixa carrega.
Desenhe as cartas do seu jeito com CardTemplate (Reagir: cardRenderer). Ele recebe o registro e a lane de cada carta; Field , Label e DisplayValue (Reagir: field, label e displayValue) mostram uma coluna como a carta padrão, e OpenAsync e MoveToAsync (Reagir: open e moveTo) abrir o registro e mover a carta, onde CanOpen e CanMove digam que podem. Um clique no cartão ainda abre seu registro, e seu menu Mover para o Movimento fica ao lado do seu conteúdo. As colunas que um modelo mostra devem ser as da visualização, então o quadro as lê com cada carta.
As tarefas da demo passam pela própria visualização de Todas as Tarefas do Dataverse, uma faixa para cada motivo de status de Não Iniciado a Cancelado, cinco cartões por vez. A CardTemplate (Reagir: cardRenderer) mostra o assunto de cada tarefa, sobre o que ela trata, quando vence e sua prioridade, os mais altos em vermelho.
Exemplo de reação
Exemplo de Blazor
React TypeScript
Razor
CSS
Programa
Ainda não começou
Em andamento
Esperando por outra pessoa
Diferido
Concluído
Cancelado
Colunas
Sortem
Cartas por rota
5
10
20
50
100
Ainda não começou155
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
Carregue mais
Em andamento42
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
Carregue mais
Esperando por outra pessoa28
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
Carregue mais
Diferido18
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
Carregue mais
Concluído57
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
Carregue mais
Cancelado16
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
Carregue mais
Quando a tabela do tabuleiro tem uma página registrada para seus registros (veja Páginas de Registro) e o tabuleiro não Form tem (Reagir: form), o título de uma carta faz link para ela, e abrir a carta vai para lá; ShowRecordLinks (Reagir: showRecordLinks) desativa isso. Caso contrário, clicar em uma carta abre seu registro em um diálogo no centro ou, com FormLocation (Reagir: formLocation), em um painel lateral à esquerda ou à direita. A forma é KanbanDefaultForm — as colunas da vista da tabela do tabuleiro e da coluna da faixa, cada uma com o editor que seu tipo ocupa — ou seu próprio componente de editores em Form (Reagir: form). O registro é lido como uma página de registro o lê, através do mesmo acesso à tabela e segurança da coluna, e só pode ser alterado em um Editable quadro, por um usuário que pode alterá-lo.
Cartas móveis
Em um Editable tabuleiro (React: editable), os usuários movem uma carta para outra faixa arrastando-a, do teclado ou pelo menu Mover para o menu da carta. A carta se move de uma vez, e o tabuleiro salva o que mudou: a coluna da rota — por um motivo de status, apenas o motivo, já que o servidor move o estado do registro junto com ela — e o valor da carta, onde o tabuleiro mantém uma. Um save que falha coloca a carta de volta e diz isso.
Uma carta só se move onde o usuário pode alterá-la: Escreva em seu registro, através do acesso à tabela do portal e na coluna de faixa, que deve ser uma que uma atualização pode configurar e essa coluna que a segurança não retenha. Colocar cartas em ordem também precisa Escrever na coluna de rank. Uma carta que o usuário não pode mover permanece onde está, sem Mover para o menu.
As faixas de razão de status seguem seus estados e as mudanças de estado que a tabela permite, com as quais o servidor se AddStateTransitions registra (veja RecordContext). Oportunidades, casos, cotações e ordens as têm por padrão: uma carta não é tomada por uma faixa que seu registro não pode alcançar a partir de si mesmo, e o Move to lista apenas as rotas que pode. Uma mudança de status feita por uma atualização — uma oportunidade reaberta, um caso cancelado ou reativado, uma cotação ativada, uma ordem enviada — pede ao usuário que confirme primeiro, e uma ação própria do Dataverse abre o diálogo de fechar, como os registros de fechamento abaixo descrevem. As cartas de status fechado não são colocadas em outra ordem entre si. Uma tabela sem transições se move livremente: uma tarefa movida para Concluído é concluída e movida de volta, aberta novamente.
O cabeçalho de cada faixa em um Editable quadro possui um botão Adicionar que abre um novo registro já naquela faixa, na forma do quadro: o ( Form Reagir: form) ou KanbanDefaultForm. Ele mostra apenas para os usuários que podem criar os registros da tabela e definir sua coluna de faixa, e nunca em uma faixa de registros fechados, pois um registro é criado aberto. Uma vez salvo, o cartão aparece no topo de sua faixa. Desligue-o com AllowNew (Reagir: allowNew). Handle PrepareNewRecord (React: prepareNewRecord) para dar mais valores ao novo registro antes de sua forma abrir: ele recebe o registro, o valor da faixa já nele e a faixa. Um botão de barra de ferramentas também pode adicionar uma carta: CanCreate e NewAsync no KanbanBoardContext (React: canCreate e newCard) digam se uma lane pega uma nova carta e abre sua forma — sem nenhuma lane nomeada, na primeira que aceita uma.
React
Blazor
<KanbanBoard defaultViewId={allTasksViewId} laneColumn="statuscode" editable>
{/* Um botão de barra de ferramentas que adiciona uma carta como o botão Adicionar de uma lane faz */}
<KanbanBoardButton label="New task" icon={<AddRegular />} onClick={(board) => board.newCard()} />
</KanbanBoard>
<KanbanBoard DefaultViewId="allTasksViewId" LaneColumn="statuscode" Editable="true">
<ToolbarItems>
<!-- Um botão de barra de ferramentas que adiciona uma carta como o botão Adicionar de uma lane faz -->
<KanbanBoardButton Label="New task"
Icon="@(new Icons.Regular.Size20.Add())"
OnClick="@((KanbanBoardContext board) => board.NewAsync())" />
</ToolbarItems>
</KanbanBoard>
React
Blazor
{/* Cada tarefa adicionada no tabuleiro começa com alta prioridade */}
<KanbanBoard
defaultViewId={allTasksViewId}
laneColumn="statuscode"
editable
prepareNewRecord={(record) => ({
...record,
properties: { ...record.properties, prioritycode: { $type: ColumnType.Choice, value: 2 } },
})}
/>
<!-- Cada tarefa adicionada no tabuleiro começa com alta prioridade -->
<KanbanBoard DefaultViewId="allTasksViewId" LaneColumn="statuscode" Editable="true"
PrepareNewRecord="@(card => { card.Record["prioritycode"] = new ChoiceValue { Value = 2 }; return Task.CompletedTask; })" />
Registros de encerramento
Em um quadro por razão de status, uma carta dropada em uma faixa na qual o Dataverse fecha registros com uma ação própria — Ganho ou Perdido de uma oportunidade, Resolvido de um caso, Ganho ou Fechado de uma cotação, Cumprido ou Cancelado de uma ordem — abre uma caixa de diálogo com o motivo de status, a faixa inicial e o que o fechamento registra: a receita real e a data de fechamento de uma oportunidade ganha; a data de fechamento de uma perdida, e o concorrente para o qual foi perdida onde o usuário pode escolher concorrentes; a resolução e o tempo faturável de um caso; a data de fechamento de uma cotação ou uma ordem; e uma descrição. Confirmado, o registro é fechado por meio da própria mensagem do Dataverse, como WinOpportunity ou CloseIncident; cancelado, o cartão volta para trás. Arrastado de volta para uma faixa aberta, uma oportunidade é reaberta e um caso reativado assim que o usuário confirma. Tente na demo do Pipeline. O mesmo diálogo está atrás dos botões de fechar no formulário de um registro, como WinOpportunityButton: veja RecordContext.
Um fechamento é julgado como uma alteração do status do registro: o usuário deve poder alterar o registro e suas colunas de status, além de apontar para o concorrente que nomear. O Dataverse arquiva o fechamento sob o registro como uma atividade própria (opportunityclose, incidentresolution, quoteclose, orderclose), que não precisa de acesso à tabela sua. O usuário da aplicação do portal precisa de AppendTo na tabela do registro, Criar e Anexar nas atividades, e para uma oportunidade AppendTo em concorrentes: veja Dataverse Connection.
React
Blazor
{/* Dropado em Vencido, Perdido ou Resolvido, uma carta abre o diálogo de encerramento */}
<KanbanBoard defaultViewId={myOpportunitiesViewId} laneColumn="statuscode" editable />
<!-- Dropado em Vencido, Perdido ou Resolvido, uma carta abre o diálogo de encerramento -->
<KanbanBoard DefaultViewId="myOpportunitiesViewId" LaneColumn="statuscode" Editable="true" />
Colocando as cartas em ordem
Nomeie uma RankColumn (Reagir: rankColumn) e os usuários colocam as cartas de cada faixa em ordem manualmente. Uma faixa é ordenada pelo valor, depois pela ordenação da vista, e uma carta caída entre duas outras recebe um valor entre as deles. Normalmente, esse valor é tudo o que um drop escreve. Cartas sem valor se classificam primeiro, e são ranqueadas por turno quando uma carta é largada entre elas ou logo abaixo delas; uma faixa cujos valores não têm espaço entre duas cartas é classificada de novo, na ordem em que mostra. Essas posições são salvas com o movimento, em uma única transação. Uma faixa com mais de 5.000 cartas não pode ser ordenada manualmente, nem uma carta pode ser descartada onde ela colocaria uma que o usuário não pode mudar. Sem uma coluna de classificação, uma faixa segue a ordem da visualização, e uma carta se move apenas para outra faixa.
A coluna de valor é uma coluna decimal da tabela do tabuleiro cujo alcance permite números negativos, já que uma carta caída acima da primeira está classificada abaixo dela. Sua precisão determina com que frequência uma rota é classificada de novo: cartas começam com um milhão de diferença, e cada queda entre duas metades divide a sala entre elas, então uma coluna de dez casas decimais precisa de cerca de cinquenta quedas em um lugar antes de sua faixa ser classificada novamente, e uma de nenhuma cerca de vinte.
Handle SaveChange (Reagir: onCardMove) para salvar um movimento do seu jeito, no lugar do tabuleiro: por meio de um serviço seu, após pedir ao usuário, ou não fazer nada. Recebe um KanbanCardMove: as cartas Recordda carta , as rotas em que ela veio From e saiu To, está Index lá e é Rank, o Update tabuleiro escreveria, e o OtherUpdates que pertence à mesma transação, escrito depois dela — os valores de outras cartas, ou, para uma carta que sai de uma faixa fechada, seu próprio valor quando seu status a reabriu — e, para uma carta caída em uma faixa que a fecha, o Close (Reagir: close) o usuário confirmou, para enviar depois dele. Volte true para manter a carta onde foi deixada, ou false para colocá-la de volta. O quadro não lê nada novamente após um movimento que não salvou, então uma página pode manter um movimento apenas na página.
React
Blazor
<KanbanBoard
defaultViewId={openOpportunitiesViewId}
laneColumn="opportunityratingcode"
editable
// Salvo pelo próprio serviço da página; falso coloca o cartão de volta.
onCardMove={(move) => pipeline.changeRating(move.record.id, move.to.key)}
/>
<KanbanBoard DefaultViewId="openOpportunitiesViewId"
LaneColumn="opportunityratingcode"
Editable="true"
SaveChange="SaveMoveAsync" />
@code {
// Salvo pelo próprio serviço da página; falso coloca o cartão de volta.
private Task<bool> SaveMoveAsync(KanbanCardMove move)
=> _pipeline.ChangeRatingAsync(move.Record.Id, move.To.Key);
}
Leitores de teclado, toque e tela
Cada carta que pode se mover tem um ... botão com um menu Mover para as pistas para onde pode ir, que funciona da mesma forma pelo teclado, por toque e com leitor de tela. Uma carta também pode ser movida diretamente do teclado: foque-a, pressione Espaço para pegar, as setas para levá-la para outra faixa ou outro lugar em si mesma, e Espaço novamente para colocá-la. Em uma tela sensível ao toque, uma carta é arrastada pela empunhadura, então as faixas ainda rolam sob um dedo. Os leitores de tela ouvem cada movimento — Carta movida para Faixa — e um movimento que falha.
Barra de Ferramentas
A barra de ferramentas é organizada como uma grade: o seletor de visualização à esquerda — ou o Title (React: title), quando há apenas uma visualização — e à direita seus próprios controles, Totais, a caixa de busca, Filtro, Atualizar e Configurações. Adicione seus controles com ToolbarItems (React: os filhos do tabuleiro). A KanbanBoardButton recebe o quadro ao clicar: sua tabela, a visão que mostra, suas faixas em ordem e RefreshAsync (React: refresh) para ler todas as faixas novamente.
React
Blazor
<KanbanBoard defaultViewId={openOpportunitiesViewId} laneColumn="opportunityratingcode">
{/* Seu próprio botão, que é entregue ao tabuleiro ao clicar */}
<KanbanBoardButton
label="Export"
icon={<ArrowDownloadRegular />}
onClick={(board) => exportAsync(board.viewId, board.lanes)}
/>
</KanbanBoard>
<KanbanBoard DefaultViewId="openOpportunitiesViewId" LaneColumn="opportunityratingcode">
<ToolbarItems>
<!-- Seu próprio botão, que é entregue ao tabuleiro ao clicar -->
<KanbanBoardButton Label="Export"
Icon="@(new Icons.Regular.Size20.ArrowDownload())"
OnClick="@((KanbanBoardContext board) => ExportAsync(board.ViewId, board.Lanes))" />
</ToolbarItems>
</KanbanBoard>
Visualizações, busca e filtros
Um quadro mostra os registros de uma visualização — uma do Dataverse ou uma que a página define — e sua tabela é a da visualização. DefaultViewId (Reagir: defaultViewId) é a visualização em que ela se abre, e ViewIds (Reagir: viewIds) as outras que o seletor de visualização oferece, da mesma tabela. A caixa de busca encontra cartas enquanto a busca de uma grade encontra linhas: desde o início do valor de uma coluna de busca, ou em qualquer lugar após um início *. Ela olha nas colunas que as cartas mostram, nomeia-as em sua dica de ferramenta e marca as correspondências nas cartas. Desligue com AllowSearch (Reagir: allowSearch).
Com AllowFiltering (Reagir: allowFiltering), o menu Filtro da barra de ferramentas oferece filtros de Editar, o botão de Filtro da grade de diálogo se abre, cujos filtros substituem os da visualização até que o usuário escolha outra visualização. Ele está desativado por padrão, porque o usuário pode remover todos os filtros que a visualização possui.
Com (Reagir: allowSavedViews), um usuário logado pode salvar o tabuleiro como organizou — a visualização com seus filtros, os campos e ordenação das cartas, os totais das faixas, as cartas que AllowSavedViews cada faixa carrega e as faixas colapsadas ou ocultas — como uma visualização própria, e escolher a visualização padrão e esconder as que não usar, no menu Filtro. Sem um SavedViewsKey (Reagir: savedViewsKey), um tabuleiro compartilha suas visualizações com as grades, calendários e tabuleiros da sua mesa que não têm nenhuma, cada um mantendo seu próprio layout delas. Como as visualizações são salvas, alteradas e compartilhadas está na página de Visualizações Salvas.
Uma página pode definir suas próprias visualizações em código com CustomViewDefinitions (React: customViewDefinitions), as definições de visualização da grade. Elas são oferecidas no seletor ao lado ViewIds sem estarem listadas lá, DefaultViewId pode nomear uma, e um tabuleiro pode ter apenas essas imagens. Cada uma é lida por seu próprio FetchXML, dentro do acesso à tabela do usuário, e dispõe o tabuleiro como diz: são PageSize as cartas que uma lane carrega, as Hidden de uma coluna e DisplayLabel esconder ou renomear seu campo de cartas, e são Aggregates os totais das lanes. Construa a lista uma vez, em um campo: uma nova lista inicia o tabuleiro novamente.
<KanbanBoard CustomViewDefinitions="_views" LaneColumn="statuscode" Editable="true" />
@code {
// As oportunidades abertas, dez cartas por pista, com a receita estimada de cada rota
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" },
],
},
];
}
Mantendo seu lugar na URL
Nomeie um parâmetro de consulta em PersistedStateQueryParameter (React: persistedStateQueryParameter), e o quadro mantém a visualização escolhida e as faixas colapsadas ali, então uma recarga ou um link compartilhado abre como foi deixado. O que ele abriria de qualquer forma fica de fora. A busca também é mantida com IncludeSearchInPersistedState; ela é omitida por padrão, já que o que os usuários procuram pode ser sensível. Cada alteração substitui a entrada do histórico do navegador, e ambas as pilhas escrevem o mesmo valor, então um link feito em uma abre o mesmo quadro na outra.
O tabuleiro é desenhado com os próprios controles e tokens de design do Fluent UI, então segue seu tema, claro ou escuro, e sua cor de destaque, e o ponto de uma faixa pega a cor da opção do Dataverse. As pistas têm 280 pixels de largura, lado a lado, e rolam lateralmente quando não encaixam; no celular, cada uma ocupa a maior parte da tela e encaixa no lugar. Height (React: height) define a altura do tabuleiro, barra de ferramentas incluída — 600 pixels por padrão — e cada lane rola suas cartas dentro dele. Para restyling, o tabuleiro, suas faixas e suas cartas carregam classes próprias, entre ppp-kanbanelas , ppp-kanban-lane, ppp-kanban-lane-header e ppp-kanban-card; Class e Style (React: className e style) adicionam as suas próprias.
React
Blazor
KanbanBoard Classe
Parâmetros
Nome
Tipo
Padrão
Descrição
AllowFiltering
bool
False
Se o usuário pode alterar os filtros da visualização, a partir do menu Filtro, como em uma grade. Off por padrão: o usuário pode remover todos os filtros que a visualização possui.
AllowNew
bool
True
Se cada faixa de um KanbanBoard.Editable tabuleiro oferece uma nova carta, com um botão Adicionar em seu cabeçalho: um que o usuário pode criar, no valor da faixa — nenhum em uma faixa de cartas fechadas, como um O registro é criado aberto. Padrão para true.
AllowSavedViews
bool
False
Vamos os usuários logados salvar o quadro como organizaram — a visualização que ele mostra com seus filtros, campos e ordenação das cartas, totais das rotas e as rotas colapsadas ou ocultas — como visualizações próprias, oferecidas no seletor de visualização ao lado das páginas, e escolhem a visualização padrão E esconder as visualizações que eles não usam. Desligado por padrão. Precisa da solução Power Portals Pro Core tabelas de visualização salva; um usuário interno também precisa das Vistas Salvas do Power Portals Pro função de segurança.
AllowSearch
bool
True
Se a barra de ferramentas tem uma caixa de busca. O padrão é true.
CardImageColumn
string?
Uma coluna de imagem que cada carta padrão mostra como avatar ao lado do título, como fazem as cartas da grade.
CardTemplate
RenderFragment<KanbanCardContext>?
O conteúdo de cada carta, no lugar do padrão: seu título — a primeira coluna da visualização — e as outras colunas do View sob seus títulos.
CustomViewDefinitions
List<ViewDefinition>?
Visualizações que a página define — as s da Models.ViewDefinitiongrade — oferecidas no seletor ao lado KanbanBoard.ViewIds sem estar listado lá; KanbanBoard.DefaultViewId pode citar um. A A placa pode ter apenas essas placas. Cada uma é lida por seu próprio FetchXML e dispõe a placa conforme diz (Models.ViewDefinition)): as cartas que uma lane lê por vez, a carta de suas colunas campos ocultos ou titulados, e os totais das rotas. Resta um de uma tabela diferente do tabuleiro fora. Construa a lista uma vez — em um campo, não em linha na marcação — enquanto uma nova lista inicia o Embarcar de novo.
DateLaneDrop
KanbanDateLaneDrop
ChangeDate
O que uma carta deixada em outra faixa de encontros faz, onde o KanbanBoard.LaneColumn é um encontro: Ele leva o primeiro dia da faixa (KanbanDateLaneDrop.ChangeDate, o padrão) — mantendo seu horário do dia; nenhuma data em Nenhuma data; nenhuma é omitida em Atraso — ou as faixas de data não aceitam cartas um do outro (KanbanDateLaneDrop.None). Sem efeito nas outras rotas.
DateLaneOrder
KanbanDateLaneOrder
Rank
Como as cartas das lane de data são ordenadas, onde o KanbanBoard.LaneColumn é uma data: pelo KanbanBoard.RankColumn como outras faixas são (KanbanDateLaneOrder.Rank, a padrão), ou pela própria data (KanbanDateLaneOrder.Date) — uma carta deixada abaixo outro toma seu dia, mantendo seu próprio tempo, um é lançado no topo da pista no primeiro dia, e A coluna de rank não é usada. Sem efeito nas outras rotas.
DateLanes
IReadOnlyList<KanbanDateLane>?
As pistas que uma data KanbanBoard.LaneColumn indica, em ordem de data: predefinições como KanbanDateLane.Today, KanbanDateLane.ThisMonth ou KanbanDateLane.ThisFiscalQuarter — calculado a cada leitura de hoje no usuário fuso horário, a semana da cultura e o ano fiscal da organização — ou as suas próprias vias (DateTime,System.DateTime) e afins). Cada um começa onde a anterior termina, então cada carta cai em uma única faixa no máximo; uma carta cuja data nenhum hold não está no tabuleiro. Sem eles, o padrão sete (KanbanDateLane.Defaults): Atrasado, Hoje, Amanhã, Esta semana, Próxima semana, Mais tarde e Sem data. Uma lane é intitulada pelo seu KanbanDateLane.Title, ou pelo nome de um predefinido na linguagem do usuário, senão sua chave. Uma nova lista das mesmas faixas — uma escrita em linha no marcação — não inicia o tabuleiro novamente; outras faixas iniciam.
DefaultViewId
Guid?
A vista em que o tabuleiro se abre. A mesa do tabuleiro é a da vista.
Editable
bool
False
Se as cartas podem ser movimentadas. Uma carta se move quando o usuário pode alterar seu registro e sua faixa coluna, e — nas faixas de uma razão de status — as transições de estado da tabela permitem o movimento (Models.KanbanLane)): uma rota oferece apenas os movimentos que eles fazem, e um drop eles O Recusar volta. Uma carta caída em uma faixa para a qual suas transições a fecham — uma oportunidade Ganha ou Perdido, um caso Resolvido, um orçamento Ganho ou Fechado, um pedido Cumprido ou Cancelado — está encerrado através da própria mensagem do Dataverse: o conselho pergunta como — o motivo, a faixa para começar, e O que o Close registra. Qualquer outra mudança de estado que façam — reabrir uma oportunidade, cancelar um caso, ativar uma cotação — deve ser confirmado primeiro. Desligado por padrão.
EnforceLaneLimits
bool
False
Se o tabuleiro mantém em KanbanBoard.LaneLimits: uma rota cheia não tira carta de outra — uma queda ali volta, e Mover para não oferece carta nova. As cartas ainda se movem dentro dele. Desligado por padrão: uma faixa acima do limite só é marcada.
Form
Type?
A forma em que o registro de um cartão se abre: um componente dos editores, conforme o diálogo de registro da grade assume. Sem ele, um cartão abre a página do seu registro onde sua tabela tem um (KanbanBoard.ShowRecordLinks), Caso contrário KanbanDefaultForm: as colunas da vista e a coluna da rua.
FormLocation
DialogLocation
Center
Onde o registro de uma carta se abre: centralizado, ou em um painel lateral à esquerda ou direita. Padrão para centralizado.
Height
string
600px
Altura de toda a placa, incluindo barra de ferramentas, como qualquer comprimento de CSS. Padrão é 600px.
IncludeSearchInPersistedState
bool
False
Se a busca é mantida com o restante do estado. Não tem efeito sem KanbanBoard.PersistedStateQueryParameter.
LaneAggregateFormats
IReadOnlyDictionary<string, string>?
O formato em KanbanBoard.LaneAggregates que os totais de cada coluna são mostrados em ('N0'), pelo nome.
LaneAggregates
IReadOnlyDictionary<string, QueryAggregate>?
Os totais que o cabeçalho de cada faixa mostra para começar — uma soma, uma média, o mínimo, o máximo ou uma contagem de uma coluna, pelo nome. O usuário os altera com o botão Totais e um save A visão os mantém.
LaneColumn*
string
A coluna de onde vêm as faixas: uma escolha, um motivo de status, um Sim/Não, uma consulta ou uma coluna de data da tabela do tabuleiro. Qualquer outro mostra uma mensagem no lugar do tabuleiro. As faixas de uma coluna de data são quando cai, em dias do fuso horário do usuário: Atrasado, Hoje, Amanhã, Esta semana, Próxima semana, Até mais tarde e Sem data, ou as páginas KanbanBoard.DateLanes (KanbanBoard.DateLaneDrop, KanbanBoard.DateLaneOrder).
LaneLimits
IReadOnlyDictionary<string, int>?
O maior número de cartas que cada faixa deve conter, por: KanbanLane.Keyo cabeçalho de uma faixa limitada mostra sua contagem em relação ao seu limite ('4 / 5') e marca quando a pista tem mais. A A contagem é da faixa inteira, seja qual for a busca e os filtros do usuário mostrarem. Uma faixa não nomeada Não tem limite.
Lanes
IEnumerable<string>?
Quais rotas o tabuleiro mostra, e em que ordem, por KanbanLane.Key: uma opção valor ('1'), ' 1' e ' 0' de Sim/Não, ID de um registro, chave de uma lane de data (KanbanDateLane.Key: 'atrasado','hoje', ...), ou uma chave vazia para o Lane de cartas sem valor. Toda lane, na ordem do Dataverse, quando não está dada. Para lanas de data Ele escolhe entre os KanbanBoard.DateLanes, cujos dias permanecem conforme os definem.
LookupLanes
IEnumerable<LookupValue>?
As faixas de uma consulta: uma para cada registro, na ordem dada. Sem elas, o tabuleiro mostra uma faixa para cada registro, o nome das cartas da visualização.
PageSize
int
20
As cartas que uma lane lê por vez; as próximas vêm com seu Load more. Padrão é 20.
PersistedStateQueryParameter
string?
O nome de um parâmetro de consulta de URL para manter o estado da placa em — a visualização escolhida, as faixas colapsou e (com KanbanBoard.IncludeSearchInPersistedState) a busca — então uma recarga ou um Link abre onde foi deixado. Cada alteração substitui a entrada do histórico do navegador.
PrepareNewRecord
Func<KanbanNewRecord, Task>?
Prepara o registro de uma nova carta antes de abrir sua forma — a partir do botão Adicionar de uma faixa ou KanbanBoardContext.NewAsync(PowerPortalsPro.Common.Models.KanbanLane) — uma vez que o tabuleiro lhe atribuiu o valor da rota: a Host define os padrões através do indexador do registro (cartão. Record['column'] = valor), e Cada valor que ele define é salvo junto com o registro. O formulário não abre se for lançado, e o erro também aparece é mostrado como um cria-is fracassado.
RankColumn
string?
Uma coluna decimal onde o tabuleiro guarda a ordem das cartas, manualmente: cada faixa é ordenada por ela, e uma carta caída entre duas outras recebe um valor entre as deles. Sem ela, as cartas seguem a vista é mais ou menos, e uma carta só vai para outra faixa.
SaveChange
Func<KanbanCardMove, Task<bool>>?
Salva um movimento no lugar do tabuleiro; ao retornar false , a carta volta a ser colocada, como quando o teste é recusado. Sem ele, o tabuleiro salva o movimento em si. Um movimento que fecha o O cartão é entregue depois que o usuário explica como, com o pedido para enviar KanbanCardMove.Close; um que muda um estado que as transições da tabela governam, Uma vez que o usuário tenha confirmado.
SavedViewsKey
string?
Nomeia esse quadro entre os controles da tabela, para as visualizações salvas nele e as do usuário Visões padrão e ocultas são suas. Sem uma, o conselho compartilha suas visões com cada grade, calendário e quadro da tabela que não tem nenhum. Letras, dígitos, -, _ e ..
ShowEmptyLanes
bool
True
Se uma rota sem cartas é mostrada. Padrão para true.
ShowRecordLinks
bool
True
Se os cartões fazem link para as páginas dos registros deles, registrados no AddRecordPage, como uma grade linhas e consultas fazem. Quando a tabela do tabuleiro tem uma página e o tabuleiro não recebe KanbanBoard.Form, o título de uma carta faz um link para a página do registro e ao abrir a carta vai para lá; Uma consulta em uma carta faz um link para a página do registro onde essa tabela tem uma. Uma tabela sem página abre suas cartas no diálogo do tabuleiro. Sempre uma nova carta é criada no diálogo. Padrão true.
SignInUrl
string
Account/Login
Quando um usuário que não está logado é enviado para fazer login, a partir do menu das visualizações salvas; eles retornam para esta página. Em relação ao endereço base do app. Padrão para Conta/Login.
Title
string?
O cabeçalho do tabuleiro, mostrado no lugar do seletor de visualização quando há apenas uma visualização.
ToolbarItems
RenderFragment?
Controles para a barra de ferramentas — KanbanBoardButtons, ou qualquer outra marcação — à frente da caixa de busca.
ViewIds
IEnumerable<Guid>?
Outras vistas da mesma tabela o usuário pode alternar no seletor de visualização.
ViewSort
ViewSort
NameAscending
A ordem das visualizações no seletor. O padrão é ViewSort.NameAscending, como a grade de .
Nome:AllowFiltering
Tipo:bool
Padrão:False
Descrição:Se o usuário pode alterar os filtros da visualização, a partir do menu Filtro, como em uma grade. Off por padrão: o usuário pode remover todos os filtros que a visualização possui.
Nome:AllowNew
Tipo:bool
Padrão:True
Descrição:Se cada faixa de um KanbanBoard.Editable tabuleiro oferece uma nova carta, com um botão Adicionar em seu cabeçalho: um que o usuário pode criar, no valor da faixa — nenhum em uma faixa de cartas fechadas, como um O registro é criado aberto. Padrão para true.
Nome:AllowSavedViews
Tipo:bool
Padrão:False
Descrição:Vamos os usuários logados salvar o quadro como organizaram — a visualização que ele mostra com seus filtros, campos e ordenação das cartas, totais das rotas e as rotas colapsadas ou ocultas — como visualizações próprias, oferecidas no seletor de visualização ao lado das páginas, e escolhem a visualização padrão E esconder as visualizações que eles não usam. Desligado por padrão. Precisa da solução Power Portals Pro Core tabelas de visualização salva; um usuário interno também precisa das Vistas Salvas do Power Portals Pro função de segurança.
Nome:AllowSearch
Tipo:bool
Padrão:True
Descrição:Se a barra de ferramentas tem uma caixa de busca. O padrão é true.
Nome:CardImageColumn
Tipo:string?
Descrição:Uma coluna de imagem que cada carta padrão mostra como avatar ao lado do título, como fazem as cartas da grade.
Nome:CardTemplate
Tipo:RenderFragment<KanbanCardContext>?
Descrição:O conteúdo de cada carta, no lugar do padrão: seu título — a primeira coluna da visualização — e as outras colunas do View sob seus títulos.
Nome:CustomViewDefinitions
Tipo:List<ViewDefinition>?
Descrição:Visualizações que a página define — as s da Models.ViewDefinitiongrade — oferecidas no seletor ao lado KanbanBoard.ViewIds sem estar listado lá; KanbanBoard.DefaultViewId pode citar um. A A placa pode ter apenas essas placas. Cada uma é lida por seu próprio FetchXML e dispõe a placa conforme diz (Models.ViewDefinition)): as cartas que uma lane lê por vez, a carta de suas colunas campos ocultos ou titulados, e os totais das rotas. Resta um de uma tabela diferente do tabuleiro fora. Construa a lista uma vez — em um campo, não em linha na marcação — enquanto uma nova lista inicia o Embarcar de novo.
Nome:DateLaneDrop
Tipo:KanbanDateLaneDrop
Padrão:ChangeDate
Descrição:O que uma carta deixada em outra faixa de encontros faz, onde o KanbanBoard.LaneColumn é um encontro: Ele leva o primeiro dia da faixa (KanbanDateLaneDrop.ChangeDate, o padrão) — mantendo seu horário do dia; nenhuma data em Nenhuma data; nenhuma é omitida em Atraso — ou as faixas de data não aceitam cartas um do outro (KanbanDateLaneDrop.None). Sem efeito nas outras rotas.
Nome:DateLaneOrder
Tipo:KanbanDateLaneOrder
Padrão:Rank
Descrição:Como as cartas das lane de data são ordenadas, onde o KanbanBoard.LaneColumn é uma data: pelo KanbanBoard.RankColumn como outras faixas são (KanbanDateLaneOrder.Rank, a padrão), ou pela própria data (KanbanDateLaneOrder.Date) — uma carta deixada abaixo outro toma seu dia, mantendo seu próprio tempo, um é lançado no topo da pista no primeiro dia, e A coluna de rank não é usada. Sem efeito nas outras rotas.
Nome:DateLanes
Tipo:IReadOnlyList<KanbanDateLane>?
Descrição:As pistas que uma data KanbanBoard.LaneColumn indica, em ordem de data: predefinições como KanbanDateLane.Today, KanbanDateLane.ThisMonth ou KanbanDateLane.ThisFiscalQuarter — calculado a cada leitura de hoje no usuário fuso horário, a semana da cultura e o ano fiscal da organização — ou as suas próprias vias (DateTime,System.DateTime) e afins). Cada um começa onde a anterior termina, então cada carta cai em uma única faixa no máximo; uma carta cuja data nenhum hold não está no tabuleiro. Sem eles, o padrão sete (KanbanDateLane.Defaults): Atrasado, Hoje, Amanhã, Esta semana, Próxima semana, Mais tarde e Sem data. Uma lane é intitulada pelo seu KanbanDateLane.Title, ou pelo nome de um predefinido na linguagem do usuário, senão sua chave. Uma nova lista das mesmas faixas — uma escrita em linha no marcação — não inicia o tabuleiro novamente; outras faixas iniciam.
Nome:DefaultViewId
Tipo:Guid?
Descrição:A vista em que o tabuleiro se abre. A mesa do tabuleiro é a da vista.
Nome:Editable
Tipo:bool
Padrão:False
Descrição:Se as cartas podem ser movimentadas. Uma carta se move quando o usuário pode alterar seu registro e sua faixa coluna, e — nas faixas de uma razão de status — as transições de estado da tabela permitem o movimento (Models.KanbanLane)): uma rota oferece apenas os movimentos que eles fazem, e um drop eles O Recusar volta. Uma carta caída em uma faixa para a qual suas transições a fecham — uma oportunidade Ganha ou Perdido, um caso Resolvido, um orçamento Ganho ou Fechado, um pedido Cumprido ou Cancelado — está encerrado através da própria mensagem do Dataverse: o conselho pergunta como — o motivo, a faixa para começar, e O que o Close registra. Qualquer outra mudança de estado que façam — reabrir uma oportunidade, cancelar um caso, ativar uma cotação — deve ser confirmado primeiro. Desligado por padrão.
Nome:EnforceLaneLimits
Tipo:bool
Padrão:False
Descrição:Se o tabuleiro mantém em KanbanBoard.LaneLimits: uma rota cheia não tira carta de outra — uma queda ali volta, e Mover para não oferece carta nova. As cartas ainda se movem dentro dele. Desligado por padrão: uma faixa acima do limite só é marcada.
Nome:Form
Tipo:Type?
Descrição:A forma em que o registro de um cartão se abre: um componente dos editores, conforme o diálogo de registro da grade assume. Sem ele, um cartão abre a página do seu registro onde sua tabela tem um (KanbanBoard.ShowRecordLinks), Caso contrário KanbanDefaultForm: as colunas da vista e a coluna da rua.
Nome:FormLocation
Tipo:DialogLocation
Padrão:Center
Descrição:Onde o registro de uma carta se abre: centralizado, ou em um painel lateral à esquerda ou direita. Padrão para centralizado.
Nome:Height
Tipo:string
Padrão:600px
Descrição:Altura de toda a placa, incluindo barra de ferramentas, como qualquer comprimento de CSS. Padrão é 600px.
Nome:IncludeSearchInPersistedState
Tipo:bool
Padrão:False
Descrição:Se a busca é mantida com o restante do estado. Não tem efeito sem KanbanBoard.PersistedStateQueryParameter.
Nome:LaneAggregateFormats
Tipo:IReadOnlyDictionary<string, string>?
Descrição:O formato em KanbanBoard.LaneAggregates que os totais de cada coluna são mostrados em ('N0'), pelo nome.
Nome:LaneAggregates
Tipo:IReadOnlyDictionary<string, QueryAggregate>?
Descrição:Os totais que o cabeçalho de cada faixa mostra para começar — uma soma, uma média, o mínimo, o máximo ou uma contagem de uma coluna, pelo nome. O usuário os altera com o botão Totais e um save A visão os mantém.
Nome:LaneColumn*
Tipo:string
Descrição:A coluna de onde vêm as faixas: uma escolha, um motivo de status, um Sim/Não, uma consulta ou uma coluna de data da tabela do tabuleiro. Qualquer outro mostra uma mensagem no lugar do tabuleiro. As faixas de uma coluna de data são quando cai, em dias do fuso horário do usuário: Atrasado, Hoje, Amanhã, Esta semana, Próxima semana, Até mais tarde e Sem data, ou as páginas KanbanBoard.DateLanes (KanbanBoard.DateLaneDrop, KanbanBoard.DateLaneOrder).
Nome:LaneLimits
Tipo:IReadOnlyDictionary<string, int>?
Descrição:O maior número de cartas que cada faixa deve conter, por: KanbanLane.Keyo cabeçalho de uma faixa limitada mostra sua contagem em relação ao seu limite ('4 / 5') e marca quando a pista tem mais. A A contagem é da faixa inteira, seja qual for a busca e os filtros do usuário mostrarem. Uma faixa não nomeada Não tem limite.
Nome:Lanes
Tipo:IEnumerable<string>?
Descrição:Quais rotas o tabuleiro mostra, e em que ordem, por KanbanLane.Key: uma opção valor ('1'), ' 1' e ' 0' de Sim/Não, ID de um registro, chave de uma lane de data (KanbanDateLane.Key: 'atrasado','hoje', ...), ou uma chave vazia para o Lane de cartas sem valor. Toda lane, na ordem do Dataverse, quando não está dada. Para lanas de data Ele escolhe entre os KanbanBoard.DateLanes, cujos dias permanecem conforme os definem.
Nome:LookupLanes
Tipo:IEnumerable<LookupValue>?
Descrição:As faixas de uma consulta: uma para cada registro, na ordem dada. Sem elas, o tabuleiro mostra uma faixa para cada registro, o nome das cartas da visualização.
Nome:PageSize
Tipo:int
Padrão:20
Descrição:As cartas que uma lane lê por vez; as próximas vêm com seu Load more. Padrão é 20.
Nome:PersistedStateQueryParameter
Tipo:string?
Descrição:O nome de um parâmetro de consulta de URL para manter o estado da placa em — a visualização escolhida, as faixas colapsou e (com KanbanBoard.IncludeSearchInPersistedState) a busca — então uma recarga ou um Link abre onde foi deixado. Cada alteração substitui a entrada do histórico do navegador.
Nome:PrepareNewRecord
Tipo:Func<KanbanNewRecord, Task>?
Descrição:Prepara o registro de uma nova carta antes de abrir sua forma — a partir do botão Adicionar de uma faixa ou KanbanBoardContext.NewAsync(PowerPortalsPro.Common.Models.KanbanLane) — uma vez que o tabuleiro lhe atribuiu o valor da rota: a Host define os padrões através do indexador do registro (cartão. Record['column'] = valor), e Cada valor que ele define é salvo junto com o registro. O formulário não abre se for lançado, e o erro também aparece é mostrado como um cria-is fracassado.
Nome:RankColumn
Tipo:string?
Descrição:Uma coluna decimal onde o tabuleiro guarda a ordem das cartas, manualmente: cada faixa é ordenada por ela, e uma carta caída entre duas outras recebe um valor entre as deles. Sem ela, as cartas seguem a vista é mais ou menos, e uma carta só vai para outra faixa.
Nome:SaveChange
Tipo:Func<KanbanCardMove, Task<bool>>?
Descrição:Salva um movimento no lugar do tabuleiro; ao retornar false , a carta volta a ser colocada, como quando o teste é recusado. Sem ele, o tabuleiro salva o movimento em si. Um movimento que fecha o O cartão é entregue depois que o usuário explica como, com o pedido para enviar KanbanCardMove.Close; um que muda um estado que as transições da tabela governam, Uma vez que o usuário tenha confirmado.
Nome:SavedViewsKey
Tipo:string?
Descrição:Nomeia esse quadro entre os controles da tabela, para as visualizações salvas nele e as do usuário Visões padrão e ocultas são suas. Sem uma, o conselho compartilha suas visões com cada grade, calendário e quadro da tabela que não tem nenhum. Letras, dígitos, -, _ e ..
Nome:ShowEmptyLanes
Tipo:bool
Padrão:True
Descrição:Se uma rota sem cartas é mostrada. Padrão para true.
Nome:ShowRecordLinks
Tipo:bool
Padrão:True
Descrição:Se os cartões fazem link para as páginas dos registros deles, registrados no AddRecordPage, como uma grade linhas e consultas fazem. Quando a tabela do tabuleiro tem uma página e o tabuleiro não recebe KanbanBoard.Form, o título de uma carta faz um link para a página do registro e ao abrir a carta vai para lá; Uma consulta em uma carta faz um link para a página do registro onde essa tabela tem uma. Uma tabela sem página abre suas cartas no diálogo do tabuleiro. Sempre uma nova carta é criada no diálogo. Padrão true.
Nome:SignInUrl
Tipo:string
Padrão:Account/Login
Descrição:Quando um usuário que não está logado é enviado para fazer login, a partir do menu das visualizações salvas; eles retornam para esta página. Em relação ao endereço base do app. Padrão para Conta/Login.
Nome:Title
Tipo:string?
Descrição:O cabeçalho do tabuleiro, mostrado no lugar do seletor de visualização quando há apenas uma visualização.
Nome:ToolbarItems
Tipo:RenderFragment?
Descrição:Controles para a barra de ferramentas — KanbanBoardButtons, ou qualquer outra marcação — à frente da caixa de busca.
Nome:ViewIds
Tipo:IEnumerable<Guid>?
Descrição:Outras vistas da mesma tabela o usuário pode alternar no seletor de visualização.
Nome:ViewSort
Tipo:ViewSort
Padrão:NameAscending
Descrição:A ordem das visualizações no seletor. O padrão é ViewSort.NameAscending, como a grade de .
Métodos
Nome
Parâmetros
Tipo
Descrição
RefreshAsync
Task
Lê todas as faixas mostradas novamente.
Nome:RefreshAsync
Tipo:Task
Descrição:Lê todas as faixas mostradas novamente.
Apply começa com um filtro nas colunas seguintes:
Assunto
Motivo do Status
Prioridade
Proprietário
Sobre
Utiliza comparações de data ou ano nas colunas seguintes:
Data de parto
Apply começa com um filtro nas colunas seguintes:
Assunto
Motivo do Status
Prioridade
Proprietário
Sobre
Utiliza comparações de data ou ano nas colunas seguintes:
Data de parto
Apply começa com um filtro nas colunas seguintes:
Cliente em potencial
Conta
Contato
E-mail
Tema
Utiliza comparações numéricas nas colunas a seguir:
Probabilidade
Receita estimada
Utiliza comparações de data ou ano nas colunas seguintes:
Data de fechamento do est.
Center Right Left
Apply começa com um filtro nas colunas seguintes:
Cliente em potencial
Conta
Contato
E-mail
Tema
Utiliza comparações numéricas nas colunas a seguir:
Probabilidade
Receita estimada
Utiliza comparações de data ou ano nas colunas seguintes:
Data de fechamento do est.
Rank Date AtualizarDefault NameAscending NameDescending AtualizarChangeDate None