Pular para o conteudo principal

Documentacao FSComponentes

Referencia completa dos componentes disponiveis na biblioteca.

Dependencias da pagina

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/@eonasdan/tempus-dominus@6.9.4/dist/css/tempus-dominus.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@eonasdan/tempus-dominus@6.9.4/dist/js/tempus-dominus.min.js"></script>

Registro dos controles

<%@ Register TagPrefix="fs" Namespace="FSComponentes.FSComponentes" Assembly="FSComponentes" %>

DLLs de idioma

Os idiomas disponiveis sao descobertos a partir das DLLs carregadas no bin. O nucleo continua em FSComponentesIdiomas.dll, enquanto os textos de cada idioma ficam em assemblies separados.

FSComponentesIdiomas.dll
FSComponentesIdiomas.pt-BR.dll
FSComponentesIdiomas.en-US.dll
Para adicionar um idioma, crie uma DLL com um provider que implemente IFSIdiomaProvider. Para remover um idioma do seletor, remova a DLL correspondente do bin.

Bootstrap5Demo

Pagina enxuta para subir a biblioteca rapidamente em uma tela Web Forms com Bootstrap 5.

Arquivos do exemplo rapido no projeto Teste: Bootstrap5Demo.aspx e Bootstrap5Demo.md. Use esta pagina quando quiser validar a renderizacao sem abrir a vitrine completa de Default.aspx.
<a href="Bootstrap5Demo.aspx" class="btn btn-outline-secondary">Demo Bootstrap</a>

Base comum

Todos os componentes herdam a mesma estrutura visual e varias funcoes auxiliares da classe base.

PropriedadeTipoPadraoDescricao
ContainerCssClassStringmb-3Classe CSS do container externo.
RowCssClassStringrow g-3 align-items-startClasse da linha principal.
LabelColumnCssClassStringcol-md-6Classe da coluna do label.
InputColumnCssClassStringcol-md-6Classe da coluna do campo.
LabelCssClassStringform-label fw-semibold mb-0Classe do label.
PosicaoTituloStringlateralPosiciona o titulo em lateral ou topo. FSGrid, FSReportBuilder e FSHTMLEditor iniciam com topo.
HiddenStyleStringdisplay:none;Estilo aplicado quando o controle inicia oculto.
Funcoes internas prontas: encode HTML/JS, idioma por sessao ou cultura atual, mensagens padrao vindas da DLL FSComponentesIdiomas, placeholder/titulo de select e simbolo monetario por idioma.

FSAcessibilidade

Componente global para adicionar painel de acessibilidade ao site. Por padrao, todas as opcoes ficam habilitadas; cada recurso pode ser desligado no markup com False.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger0Identificador usado para montar o ID do painel.
TextoComponenteStringAcessibilidadeTitulo do painel e texto acessivel do botao.
PosicaoStringdireitaPosicao do botao: direita/right, esquerda/left, Meio/direita ou Meio/esquerda.
LarguraPainelString320pxLargura CSS do painel flutuante.
CorBotaoString#0d6efdCor de fundo do botao flutuante.
CorTextoBotaoString#ffffffCor do icone/texto acessivel do botao.
CorPainelString#ffffffCor de fundo do popup.
CorTextoPainelString#212529Cor principal do texto no popup.
CorDestaqueString#0d6efdCor de destaque dos icones e opcoes ativas no popup.
IconeBotaoStringbi bi-universal-accessClasse CSS do icone do botao. O exemplo usa Bootstrap Icons.
HabilitarPainelBooleanTrueRenderiza ou remove todo o componente.
ExibirAbertoInicialmenteBooleanFalseAbre o painel no primeiro carregamento.
HabilitarPersistenciaBooleanTrueSalva preferencias no localStorage.
ChavePersistenciaStringFSComponentes.AcessibilidadeChave usada no localStorage.
HabilitarAtalhoTecladoBooleanTruePermite abrir e fechar com Alt+A.
HabilitarLinkPularConteudoBooleanTrueAdiciona link de pular para o conteudo principal ao receber foco.
SeletorConteudoPrincipalStringmain, [role='main'], formSeletor usado pelo link de pular conteudo.
HabilitarMelhoriasSemanticasBooleanTrueAplica pequenos ajustes client-side: foco no conteudo, alt vazio em imagens sem alt e labels ARIA em botoes por titulo.
HabilitarAumentarFonte, HabilitarDiminuirFonte, HabilitarReiniciarAjustesBooleanTrueControles de tamanho de fonte e reset.
HabilitarAltoContraste, HabilitarContrasteEscuro, HabilitarEscalaCinzaBooleanTrueModos visuais de contraste e cor.
HabilitarSublinharLinks, HabilitarFonteLegivel, HabilitarFonteDislexia, HabilitarEspacamentoTexto, HabilitarAlturaLinhaBooleanTrueAjustes de leitura e tipografia.
HabilitarPausarAnimacoes, HabilitarRealceFoco, HabilitarCursorGrandeBooleanTrueAjustes de movimento, foco e cursor.
HabilitarGuiaLeitura, HabilitarMascaraLeitura, HabilitarLeitorTextoBooleanTrueGuia horizontal, mascara de leitura e leitura por voz via speechSynthesis do navegador.
<fs:FSAcessibilidade runat="server" ID="AcessibilidadeGlobal" ID_Componente="900" />

<fs:FSAcessibilidade runat="server" ID="AcessibilidadeCustom"
    ID_Componente="901"
    Posicao="Meio/esquerda"
    CorBotao="#198754"
    CorPainel="#ffffff"
    CorTextoPainel="#212529"
    CorDestaque="#198754"
    IconeBotao="bi bi-universal-access-circle"
    HabilitarLeitorTexto="False"
    HabilitarEscalaCinza="False"
    HabilitarPersistencia="True" />

FSLoginSocial

Componente de login OAuth para Google/Gmail, Facebook e Microsoft. A DLL le os tokens do Web.config, monta o fluxo de autenticacao, grava o usuario em tabelas FS_ e preenche a sessao com os dados principais.

Cadastre a URL de callback no painel do provedor exatamente igual a usada na aplicacao. Se RedirectUri ficar vazio, o componente usa a propria pagina com ?fs_login_provider=google|facebook|microsoft.
PropriedadeTipoPadraoDescricao
ConnectionStringNameStringConexaoNome da connection string usada para gravar as tabelas FS_.
HabilitarGoogle, HabilitarFacebook, HabilitarMicrosoftBooleanTrueMostra ou oculta cada provedor.
HabilitarCriacaoTabelasBooleanTrueCria automaticamente FS_Usuarios, FS_UsuariosLoginSocial e FS_LoginSocialLog se nao existirem.
RedirecionarAposLoginStringvazioURL de destino apos login concluido.
RedirecionarAposErroStringvazioURL de destino apos erro. O erro vai em fs_login_error.
LayoutHorizontalBooleanFalseRenderiza botoes em linha.
CssClassBotao, CssClassContainerStringBootstrapClasses CSS dos botoes e container.
TextoGoogle, TextoFacebook, TextoMicrosoftStringtexto padraoTexto de cada botao.
IconeGoogle, IconeFacebook, IconeMicrosoftStringBootstrap IconsClasse CSS do icone de cada botao.

Web.config

<appSettings>
  <add key="FSLoginSocial.Google.ClientId" value="SEU_CLIENT_ID" />
  <add key="FSLoginSocial.Google.ClientSecret" value="SEU_CLIENT_SECRET" />
  <add key="FSLoginSocial.Google.RedirectUri" value="https://site.com/Login.aspx?fs_login_provider=google" />

  <add key="FSLoginSocial.Facebook.ClientId" value="SEU_CLIENT_ID" />
  <add key="FSLoginSocial.Facebook.ClientSecret" value="SEU_CLIENT_SECRET" />
  <add key="FSLoginSocial.Facebook.RedirectUri" value="https://site.com/Login.aspx?fs_login_provider=facebook" />

  <add key="FSLoginSocial.Microsoft.ClientId" value="SEU_CLIENT_ID" />
  <add key="FSLoginSocial.Microsoft.ClientSecret" value="SEU_CLIENT_SECRET" />
  <add key="FSLoginSocial.Microsoft.RedirectUri" value="https://site.com/Login.aspx?fs_login_provider=microsoft" />
</appSettings>

Markup

<fs:FSLoginSocial runat="server"
    ID="LoginSocial"
    ConnectionStringName="Conexao"
    LayoutHorizontal="true"
    RedirecionarAposLogin="Default.aspx"
    RedirecionarAposErro="Login.aspx" />
Apos login, a sessao recebe FSLoginSocial.ID_Usuario, FSLoginSocial.Provedor, FSLoginSocial.Email, FSLoginSocial.Nome e FSLoginSocial.FotoUrl. O script SQL tambem fica em Database\FSLoginSocial.sql no projeto principal.

FSUsuarioLogado

Mostra os dados do usuario autenticado gravados na sessao pelo FSLoginSocial e oferece logout padronizado.

PropriedadeTipoPadraoDescricao
MostrarQuandoAnonimoBooleanTrueExibe um estado anonimo quando nao houver usuario na sessao.
MostrarEmailBooleanTrueMostra o e-mail do usuario autenticado.
MostrarProvedorBooleanTrueMostra Google, Facebook ou Microsoft abaixo do nome.
MostrarLogoutBooleanTrueMostra o botao Sair quando autenticado.
RedirecionarAposLogoutStringpagina atualDestino apos remover os dados da sessao.
SessaoNome, SessaoEmail, SessaoFotoUrlStringFSLoginSocial.*Permite adaptar o componente a chaves de sessao customizadas.
<fs:FSUsuarioLogado
    runat="server"
    ID="UsuarioLogado"
    RedirecionarAposLogout="Default.aspx" />

FSPermissao

Container que mostra ou oculta conteudo conforme perfis e permissoes armazenados na sessao.

O script Database\FSAuthorization.sql cria as tabelas FS_Perfis, FS_Permissoes, FS_UsuariosPerfis e FS_PerfisPermissoes. A tabela extra FS_PerfisPermissoes liga cada perfil as permissoes efetivas.
PropriedadeTipoPadraoDescricao
PerfisPermitidosStringvazioLista de perfis aceitos, separada por ;.
PermissoesPermitidasStringvazioLista de permissoes aceitas, separada por ;.
ExigirTodosPerfisBooleanFalseQuando verdadeiro, exige todos os perfis informados.
ExigirTodasPermissoesBooleanFalseQuando verdadeiro, exige todas as permissoes informadas.
SessaoPerfisStringFSLoginSocial.PerfisChave de sessao onde ficam os perfis do usuario.
SessaoPermissoesStringFSLoginSocial.PermissoesChave de sessao onde ficam as permissoes do usuario.
MostrarMensagemNegadoBooleanFalseMostra alerta em vez de ocultar silenciosamente.
<fs:FSPermissao runat="server" PerfisPermitidos="Administrador" MostrarMensagemNegado="true">
    <div class="alert alert-success">Conteudo administrativo.</div>
</fs:FSPermissao>
SELECT
    Perfis = STRING_AGG(p.Nome, ';'),
    Permissoes = STRING_AGG(pe.Chave, ';')
FROM dbo.FS_UsuariosPerfis up
INNER JOIN dbo.FS_Perfis p ON p.ID_Perfil = up.ID_Perfil AND p.Ativo = 1
LEFT JOIN dbo.FS_PerfisPermissoes pp ON pp.ID_Perfil = p.ID_Perfil AND pp.Ativo = 1
LEFT JOIN dbo.FS_Permissoes pe ON pe.ID_Permissao = pp.ID_Permissao AND pe.Ativo = 1
WHERE up.ID_Usuario = @ID_Usuario AND up.Ativo = 1;

FSAvatar

Avatar por imagem ou iniciais, com status e nome opcional.

PropriedadeTipoPadraoDescricao
NomeStringvazioNome usado para iniciais e exibicao.
ImagemUrlStringvazioImagem do avatar. Se vazia, usa iniciais.
TamanhoString48pxTamanho CSS do avatar.
StatusStringvazioonline, offline, ocupado ou ausente.
MostrarNome, MostrarStatusTextoBooleanFalseExibe metadados ao lado.
AvatarCssClassStringfs-avatarClasse CSS principal do avatar.
<fs:FSAvatar runat="server" Nome="Ana Martins" Status="online" MostrarNome="true" MostrarStatusTexto="true" />

FSDependencyValidator

Validador client-side para avisar quando dependencias da pagina nao foram carregadas.

PropriedadeTipoPadraoDescricao
VerificarBootstrapJsBooleanTrueConfere se window.bootstrap.Modal existe.
VerificarBootstrapIconsBooleanTrueConfere se Bootstrap Icons foi carregado.
VerificarTempusDominusBooleanFalseConfere se o objeto global do Tempus Dominus existe.
MostrarQuandoOkBooleanFalseQuando falso, fica oculto se todas as dependencias existirem.
PosicaoFixaBooleanFalseMostra o aviso fixo no canto inferior direito.
OnClientValidatedStringvazioJavaScript chamado com validator e result.
<fs:FSDependencyValidator
    runat="server"
    ID="DependencyValidator"
    VerificarTempusDominus="true" />

FSTheme

Tema global para padronizar cores, bordas, foco e alguns componentes Bootstrap/FSComponentes usando variaveis CSS.

PropriedadeTipoPadraoDescricao
EscopoCssString:rootSeletor CSS onde as variaveis serao aplicadas.
CorPrimariaString#0d6efdCor principal de botoes, foco e destaques.
CorSucessoString#198754Cor de sucesso.
CorBordaString#dee2e6Cor padrao de bordas dos componentes.
RaioBordaString8pxRaio de borda aplicado em cards, modais e componentes FS.
AplicarBootstrapBooleanTrueAplica ajustes em botoes, foco e elementos Bootstrap.
AplicarComponentesFSBooleanTrueAplica ajustes em wizard, kanban, assinatura e QR Code.
CssExtraStringvazioCSS livre para complementar o tema quando necessario.
<fs:FSTheme
    runat="server"
    ID="TemaGlobal"
    CorPrimaria="#198754"
    CorSucesso="#198754"
    RaioBorda="8px" />

FSTimeline

Linha do tempo para historico, logs e etapas, usando formato compacto de string.

PropriedadeTipoPadraoDescricao
TituloStringvazioTitulo da timeline.
ItensStringvazioFormato data|titulo|descricao|tipo;;....
MostrarDatasBooleanTrueExibe ou oculta datas.
CompactoBooleanFalseReduz espacamento vertical.
SeparadorItens, SeparadorCamposString;; e |Separadores do formato compacto.
<fs:FSTimeline runat="server" Titulo="Historico" Itens="Hoje|Inicio|Demo carregada.|sucesso;;Hoje|Teste|Componentes renderizados.|info" />

FSWizard

Assistente em etapas para formularios e fluxos guiados, com progresso, navegacao anterior/proximo e validacao client-side por etapa.

PropriedadeTipoPadraoDescricao
TituloStringAssistenteTitulo do wizard.
SubtituloStringvazioTexto auxiliar abaixo do titulo.
MostrarProgressoBooleanTrueExibe a barra de progresso no cabecalho.
MostrarResumoEtapasBooleanTrueExibe os botoes de etapas no topo.
PermitirCliqueEtapasBooleanTruePermite navegar clicando diretamente nas etapas.
ValidarEtapaAtualBooleanTrueUsa checkValidity nos campos visiveis antes de avancar.
OnClientFinishStringvazioJavaScript executado ao concluir. Retorne false para impedir submit.
Cada FSWizardStep aceita conteudo livre e propriedades como Titulo, Subtitulo, Icone, ValidarCamposObrigatorios e Desabilitada.
<fs:FSWizard runat="server" ID="WizardDemo" Titulo="Cadastro guiado" OnClientFinish="alert('Concluido'); return false;">
    <fs:FSWizardStep runat="server" Titulo="Cliente" Icone="bi bi-person">
        <input class="form-control" required="required" placeholder="Nome" />
    </fs:FSWizardStep>
    <fs:FSWizardStep runat="server" Titulo="Revisao" Icone="bi bi-check2-circle" ValidarCamposObrigatorios="false">
        <div class="alert alert-success mb-0">Pronto para concluir.</div>
    </fs:FSWizardStep>
</fs:FSWizard>

FSKanban

Quadro Kanban simples com colunas, cards, contadores e drag-and-drop opcional. O estado atualizado e salvo em hidden como JSON.

PropriedadeTipoPadraoDescricao
TituloStringKanbanTitulo do quadro.
ColunasStringvazioFormato id|titulo|cor;;....
CardsStringvazioFormato id|coluna|titulo|descricao|badge|cor;;....
PermitirArrastarBooleanTruePermite mover cards entre colunas no navegador.
MostrarContadorBooleanTrueMostra a quantidade de cards por coluna.
OnClientMoveStringvazioJavaScript chamado ao mover. Recebe kanban, cardId e columnId.
<fs:FSKanban
    runat="server"
    ID="KanbanDemo"
    Titulo="Pipeline"
    Colunas="todo|A fazer|#6c757d;;doing|Em andamento|#0d6efd;;done|Concluido|#198754"
    Cards="k1|todo|Briefing|Validar dados iniciais.|Hoje|#6c757d;;k2|doing|Proposta|Montar resumo comercial.|Alta|#dc3545" />

FSAlert

Alerta inline renderizado no servidor, com tipos Bootstrap, icone e opcao dismissivel.

PropriedadeTipoPadraoDescricao
TituloStringvazioTitulo em negrito.
MensagemStringvazioMensagem principal.
TipoStringinfosucesso, erro, alerta, info, primary ou secondary.
DismissivelBooleanFalseMostra botao de fechar.
MostrarIconeBooleanTrueMostra icone do tipo.
AlertCssClassStringclasse padraoSubstitui as classes CSS do alerta.
<fs:FSAlert runat="server" ID="AlertDemo" Tipo="info" Titulo="Dica" Mensagem="Use os componentes globais para feedback consistente." Dismissivel="true" />

FSModal

Modal Bootstrap padronizado, com botao acionador opcional, rodape, confirmacao e fallback JavaScript simples quando Bootstrap JS nao estiver carregado.

PropriedadeTipoPadraoDescricao
TituloStringModalTitulo do modal.
CorpoStringvazioTexto do corpo.
RodapeStringvazioConteudo auxiliar no rodape.
RenderizarBotaoAbrirBooleanTrueCria botao para abrir o modal.
TextoBotaoAbrir, IconeBotaoAbrirStringpadraoTexto e icone do botao acionador.
TamanhoStringpadraosm, lg, xl ou fullscreen.
Centralizado, Rolavel, EstaticoBooleanvariavelComportamento visual e fechamento do modal.
MostrarAoCarregarBooleanFalseAbre ao carregar a pagina.
OnClientConfirm, OnClientCancelStringvazioCodigo JavaScript executado nos botoes do rodape.
<fs:FSModal runat="server" ID="ModalDemo" TextoBotaoAbrir="Abrir modal" Titulo="Modal FSComponentes" Corpo="Conteudo padronizado." Tamanho="lg" />

FSToast

Notificacao global baseada no Toast do Bootstrap, com tipos sucesso, erro, alerta e info.

PropriedadeTipoPadraoDescricao
TituloStringpor tipoTitulo do toast.
MensagemStringmensagem padraoConteudo da notificacao.
TipoStringinfosucesso, erro, alerta ou info.
PosicaoStringtopo-direitaPosicoes: topo/baixo e direita/esquerda/centro.
MostrarAoCarregarBooleanTrueExibe automaticamente ao carregar.
AutohideBooleanTrueFecha automaticamente.
DelayInteger5000Tempo em ms antes de fechar.
<fs:FSToast runat="server" ID="ToastOk" Tipo="sucesso" Titulo="Salvo" Mensagem="Registro salvo com sucesso." Delay="4500" />

FSLoadingOverlay

Overlay global de carregamento para submits, links e botoes com atributo data-fs-loading.

PropriedadeTipoPadraoDescricao
TextoStringCarregandoTitulo do overlay.
SubtextoStringAguarde um momento.Texto auxiliar.
MostrarInicialmenteBooleanFalseInicia visivel.
HabilitarAoSubmeterBooleanTrueMostra automaticamente no submit do formulario.
SeletorFormularioStringformFormularios monitorados.
SeletorAcionadorString[data-fs-loading]Elementos que abrem o overlay no clique.
CorFundo, CorTexto, CorDestaqueStringcores padraoCores do overlay e spinner.
<fs:FSLoadingOverlay runat="server" ID="LoadingGlobal" Texto="Processando" Subtexto="Aguarde enquanto a acao e concluida." />
<a href="Docs.aspx" class="btn btn-primary" data-fs-loading>Abrir documentacao</a>

FSTxtBox

Campo de texto curto.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseAplica required.
IDComponentePaiInteger0Controla inicio oculto.
OpcoesStringvazioCompatibilidade com modelos antigos.
ComponenteFilhoStringvazioAtributo data-toggle-ids.
ValorComponenteStringvazioValor inicial.
PlaceholderStringvazioTexto de orientacao.
MaxLengthInteger0Limite de caracteres.
PatternStringvazioRegex HTML5.
InputModeStringvazioTeclado sugerido no mobile.
MascaraStringvazioAtributo para plugin de mascara.
<fs:FSTxtBox runat="server" ID="TxtNome" ID_Componente="1" TextoComponente="Nome" Obrigatoria="true" Placeholder="Digite o nome" MaxLength="120" PosicaoTitulo="lateral" />

FSTextArea

Campo de texto longo para observacoes e descricoes.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna o campo obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValorComponenteStringvazioTexto inicial.
LinhasInteger4Numero de linhas do textarea.
PlaceholderStringvazioTexto de orientacao.
MaxLengthInteger0Limite de caracteres.
<fs:FSTextArea runat="server" ID="TxtDescricao" ID_Componente="2" TextoComponente="Descricao" Linhas="5" Placeholder="Descreva o contexto" />

FSHTMLEditor

Editor HTML rico sem dependencia externa, com ribbon em abas, grupos de ferramentas, modo codigo, links, imagens, tabelas, presets e sanitizacao no servidor.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige algum conteudo textual antes do submit.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo data-toggle-ids para dependencia visual.
ValorComponenteStringvazioHTML inicial carregado no editor.
PlaceholderStringDigite o conteudoTexto exibido quando o editor esta vazio.
AlturaEditorString320pxAltura total da area editavel.
AlturaMinimaInteger220Altura minima da superficie de edicao em pixels.
MaxLengthInteger0Limite de caracteres do texto visivel, ignorando as tags HTML.
MostrarContadorCaracteresBooleanTrueMostra contador no rodape.
MostrarVisualizacaoHtmlBooleanTrueLibera alternancia entre modo visual e HTML bruto.
PermitirUploadImagemBooleanTruePermite inserir imagem local por data URL ou por upload real no servidor.
PresetToolbarStringfullPreset da toolbar: basic, standard ou full.
SanitizarHtmlBooleanTrueRemove tags e atributos perigosos no servidor ao carregar e no postback.
UsarUploadServidorBooleanFalseQuando ativo, envia a imagem para um endpoint configurado em vez de usar somente base64.
UploadImagePageStringFSHtmlEditorUpload.aspxEndpoint para upload real da imagem.
PastaUploadImagemString~/uploads/html-editorPasta virtual de destino das imagens.
PrefixoImagemStringhtmlimgPrefixo aplicado ao nome do arquivo salvo.
TamanhoMaximoUploadKBInteger4096Limite de tamanho do upload da imagem.
ExtensoesImagemPermitidasString.png;.jpg;.jpeg;.gif;.webp;.bmpLista separada por ; com extensoes aceitas no seletor e na validacao do upload.
AceitarBase64ComoFallbackBooleanTrueSe o upload ao servidor falhar, insere a imagem como data URL.
TemplatesHtmlStringvazioLista de templates no formato Titulo|HTML;;Outro|HTML, exibida em um seletor acima da area de edicao.
LimparHtmlWordBooleanTrueRemove marcacoes comuns do Word ao colar conteudo no editor.
PermitirArrastarImagemBooleanTruePermite arrastar imagens para dentro do editor usando o mesmo fluxo de upload configurado.
ToolbarBasicaBooleanFalseReduz a toolbar para acoes essenciais.
ModoCompactoBooleanFalseDiminui paddings da toolbar e do editor.
A toolbar foi reorganizada em formato de ribbon, com abas Inicio, Inserir e Exibir e grupos visuais separados para estilos, fonte, paragrafo, listas, historico, links, imagens, estrutura e codigo HTML. O valor final sempre vai no campo oculto do componente, o componente captura o HTML no postback e a sanitizacao no servidor remove script, eventos inline e javascript: em href/src. O upload local continua respeitando ExtensoesImagemPermitidas no cliente e no endpoint de exemplo, mantendo o fluxo restrito a imagens raster. No projeto Teste, o endpoint FSHtmlEditorUpload.aspx ja foi incluido como referencia de upload real.
<fs:FSHTMLEditor runat="server" ID="HtmlDetalhes" ID_Componente="22" TextoComponente="Detalhamento rico" PosicaoTitulo="topo" Placeholder="Monte uma proposta com titulos, listas, links e imagens" AlturaEditor="320px" MostrarVisualizacaoHtml="true" MostrarContadorCaracteres="true" MaxLength="4000" ExtensoesImagemPermitidas=".png;.jpg;.jpeg;.webp" ValorComponente="&lt;h2&gt;Escopo do projeto&lt;/h2&gt;&lt;p&gt;Implementacao com &lt;strong&gt;area publica&lt;/strong&gt;.&lt;/p&gt;" />

FSNumericBox

Campo numerico com limites e suporte a sufixo.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValorComponenteStringvazioValor inicial.
PlaceholderStringvazioTexto de ajuda.
MinimoStringvazioValor minimo.
MaximoStringvazioValor maximo.
PassoString1Incremento do input.
PermitirDecimalBooleanFalsePermite decimal sem truncar.
SufixoStringvazioTexto exibido ao final em input-group.
InputModeStringvazioTeclado sugerido em mobile.
<fs:FSNumericBox runat="server" ID="NumQuantidade" ID_Componente="3" TextoComponente="Quantidade" Minimo="0" Maximo="1000" Passo="1" />

FSCurrencyBox

Especializacao de FSNumericBox para valores monetarios.

Padroes aplicados automaticamente: PermitirDecimal=True, Passo=0.01, Sufixo com simbolo monetario e InputMode=decimal quando nao informado.
<fs:FSCurrencyBox runat="server" ID="NumValor" ID_Componente="4" TextoComponente="Valor estimado" />

FSSelectBox

Select com listas paralelas de opcoes por idioma.

PropriedadeTipoPadraoDescricao
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige selecao.
IDComponentePaiInteger0Controla inicio oculto.
OpcoesPTStringvazioLista de valores em portugues.
OpcoesENStringvazioLista de textos alternativos.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioValor inicialmente selecionado.
RespostaComponentePaiRequeridaStringvazioValor auxiliar para logica externa.
<fs:FSSelectBox runat="server" ID="CmbStatus" TextoComponente="Status" OpcoesPT="Ativo;Inativo;Pendente" OpcoesEN="Active;Inactive;Pending" />

FSMultiSelectBox

Select nativo com selecao multipla, opcoes por idioma e valores iniciais preselecionados.

PropriedadeTipoPadraoDescricao
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige pelo menos um item selecionado.
IDComponentePaiInteger0Controla inicio oculto.
OpcoesPTStringvazioLista de valores em portugues.
OpcoesENStringvazioLista de textos alternativos para ingles.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioItens iniciais separados por ; ou ,.
RespostaComponentePaiRequeridaStringvazioValor auxiliar para logica externa.
LinhasVisiveisInteger5Quantidade de linhas visiveis no seletor.
O componente renderiza um <select multiple> nativo e exibe dica para selecao multipla com Ctrl ou Cmd.
<fs:FSMultiSelectBox runat="server" ID="CmbAreas" TextoComponente="Areas envolvidas" OpcoesPT="Financeiro;Comercial;Operacional;Tecnologia;Suporte" OpcoesEN="Finance;Sales;Operations;Technology;Support" ValoresComponente="Tecnologia;Suporte" LinhasVisiveis="6" />

FSRadioButtonList

Grupo de radio buttons para escolha unica.

PropriedadeTipoPadraoDescricao
ID_ComponentesGrupoInteger-Identificador do grupo.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna a selecao obrigatoria.
IDComponentePaiInteger0Controla inicio oculto.
OpcoesStringvazioItens separados por ; ou ,.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioItem inicialmente marcado.
InlineBooleanFalseExibe os radios na horizontal.
<fs:FSRadioButtonList runat="server" ID="RbUrgencia" ID_ComponentesGrupo="7" TextoComponente="Urgente?" Opcoes="Sim;Nao" Inline="true" />

FSCheckBoxList

Grupo de checkboxes para selecao multipla.

PropriedadeTipoPadraoDescricao
ID_ComponentesGrupoInteger-Identificador do grupo.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
OpcoesStringvazioItens separados por ; ou ,.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioItens marcados separados por virgula.
<fs:FSCheckBoxList runat="server" ID="ChkRecursos" ID_ComponentesGrupo="8" TextoComponente="Recursos" Opcoes="API;Dashboard;Relatorios" />

FSTagBox

Campo de tags para selecao multipla, com sugestoes, insercao por digitacao e remocao individual.

O valor final e mantido em um campo hidden separado por ;, o que facilita salvar no banco ou reaproveitar na grid com tipo tagbox.
PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige ao menos uma tag.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo data-toggle-ids para integracao externa.
ValorComponenteStringvazioTags iniciais separadas por ;, , ou pelo separador configurado.
OpcoesStringvazioSugestoes disponiveis separadas por ; ou ,.
PlaceholderStringautoTexto exibido no campo de digitacao.
MaxTagsInteger0Limite maximo de tags. 0 significa sem limite.
PermitirNovasTagsBooleanTruePermite inserir tags fora da lista de sugestoes.
SeparadorString;Separador usado no valor final armazenado no hidden.
CoresTagsStringvazioMapa de cores por tag. Exemplo: Tecnologia:#0d6efd;Suporte:#198754.
CorTagPadraoString#0d6efdCor usada quando a tag nao existir no mapa.
HabilitarDataSourceBooleanFalseLiga a carga de sugestoes diretamente do banco.
ConnectionStringNameStringvazioNome da connection string no Web.config.
ConnectionStringStringvazioConnection string direta quando nao quiser usar o nome configurado.
ProviderNameStringSystem.Data.SqlClientProvider ADO.NET usado para buscar as tags.
SelectCommandStringvazioSQL usada para carregar sugestoes do banco.
DataTextFieldStringprimeira colunaNome da coluna textual retornada pelo datasource.
DataColorFieldStringvazioNome da coluna com cor opcional para cada tag.
UrlBuscaAssincronaStringvazioEndpoint JSON opcional para busca remota durante a digitacao.
ParametroBuscaAssincronaStringtermNome do parametro enviado na consulta remota.
MinimoCaracteresBuscaInteger2Quantidade minima de caracteres para acionar a busca remota.
LimiteSugestoesInteger8Limite de sugestoes exibidas por vez.
AgruparSugestoesBooleanFalseMostra grupo em sugestoes com formato Grupo/Tag ou Grupo:Tag, salvando apenas a tag.
PermitirCriacaoRapidaBooleanTrueMostra uma sugestao de criacao quando o termo digitado ainda nao existe.
CoresAutomaticasBooleanTrueGera cor estavel por texto quando a tag nao possuir cor explicita.
Comportamento pre-configurado: aceita Enter, ; e , para adicionar, evita duplicidade ignorando maiusculas/minusculas, remove a ultima tag com Backspace quando o campo esta vazio, mostra sugestoes enquanto digita, permite cores por categoria e combina opcoes locais com busca remota.
<fs:FSTagBox
    runat="server"
    ID="TagCategorias"
    ID_Componente="81"
    TextoComponente="Categorias"
    Opcoes="Financeiro;Comercial;Operacional;Tecnologia;Suporte"
    ValorComponente="Tecnologia;Suporte"
    Placeholder="Digite uma categoria e pressione Enter"
    MaxTags="6"
    CoresTags="Financeiro:#6f42c1;Comercial:#fd7e14;Operacional:#6c757d;Tecnologia:#0d6efd;Suporte:#198754"
    UrlBuscaAssincrona="~/Default.aspx?ajaxTags=1"
    MinimoCaracteresBusca="1"
    LimiteSugestoes="10" />
<connectionStrings>
  <add name="FSDemo"
       connectionString="Data Source=SERVIDOR;Initial Catalog=BASE;Integrated Security=True"
       providerName="System.Data.SqlClient" />
</connectionStrings>

<fs:FSTagBox
    runat="server"
    ID="TagCategoriasBanco"
    ID_Componente="82"
    TextoComponente="Categorias do banco"
    HabilitarDataSource="true"
    ConnectionStringName="FSDemo"
    SelectCommand="SELECT NomeTag, CorHex FROM Categorias ORDER BY NomeTag"
    DataTextField="NomeTag"
    DataColorField="CorHex"
    PermitirNovasTags="false" />

FSSwitch

Switch booleano com visual Bootstrap 5.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValorComponenteStringvazioAceita true, sim e 1.
TextoLigadoStringSimLegenda quando ligado.
TextoDesligadoStringNaoLegenda quando desligado.
<fs:FSSwitch runat="server" ID="SwAtivo" ID_Componente="6" TextoComponente="Ativo" />

FSColorPicker

Seletor de cor HTML5.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do componente.
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige valor.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValorComponenteString#0d6efdCor inicial em hexadecimal.
<fs:FSColorPicker runat="server" ID="CorPrincipal" ID_Componente="5" TextoComponente="Cor principal" />

FSCalendario

Campo de data com Tempus Dominus.

PropriedadeTipoPadraoDescricao
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioValor inicial.
Pre configurado com formato por idioma, botoes de hoje e limpar e tema light.
<fs:FSCalendario runat="server" ID="DtInicio" TextoComponente="Data de inicio" />

FSDateTimePicker

Campo de data e hora com configuracao de minutos e segundos.

PropriedadeTipoPadraoDescricao
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseTorna obrigatorio.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioValor inicial.
HabilitarHoraBooleanTrueMostra horario.
UsarSegundosBooleanFalseMostra segundos.
PlaceholderStringvazioTexto de orientacao.
IncrementoMinutosInteger5Passo de minutos.
<fs:FSDateTimePicker runat="server" ID="DtEntrega" TextoComponente="Entrega prevista" HabilitarHora="true" IncrementoMinutos="15" />

FSUpload

Upload de PDF com envio assincrono e listagem de arquivos existentes.

PropriedadeTipoPadraoDescricao
TextoComponenteString-Texto do label.
ObrigatoriaBooleanFalseExige arquivo.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ValoresComponenteStringvazioArquivos ja vinculados separados por ;.
UploadPageStringUploadPIN.aspxEndpoint de upload.
ChaveContextoStringvazioChave opcional enviada na query string.
PastaUploadString~/uploadsPasta enviada ao endpoint para salvar o arquivo.
ExtensoesPermitidasString.pdfLista separada por ; com as extensoes permitidas.
TamanhoMaximoKBInteger0Limite maximo do arquivo em KB. Zero desabilita a validacao.
PrefixoArquivoStringvazioPrefixo enviado ao endpoint para compor o nome final do arquivo.
VisualizarEmModalBooleanTrueAbre os arquivos existentes em modal ao inves de nova janela.
HabilitarMultiploBooleanFalsePermite selecionar e enviar mais de um arquivo por vez.
HabilitarDragDropBooleanFalseRenderiza area para soltar arquivos.
MostrarBarraProgressoBooleanTrueMostra progresso agregado dos uploads usando XMLHttpRequest.
MostrarPreviewArquivosBooleanTrueLista os arquivos selecionados antes do envio.
Padroes aplicados: aceita apenas PDF, usa idioma da sessao, envia pasta/extensoes/tamanho/prefixo para o endpoint e abre a visualizacao do arquivo em modal por padrao. Para projetos legados, ainda existe fallback para ID_Fornecedor da sessao.
<fs:FSUpload runat="server" ID="UploadDocumento" TextoComponente="Documento PDF" UploadPage="UploadPIN.aspx" PastaUpload="~/uploads/documentos" ExtensoesPermitidas=".pdf" TamanhoMaximoKB="4096" PrefixoArquivo="doc" />

FSSignaturePad

Campo de assinatura digital em canvas, com suporte a mouse e toque, botoes de desfazer/limpar e valor salvo em hidden como imagem PNG base64.

PropriedadeTipoPadraoDescricao
TextoComponenteStringAssinaturaRotulo exibido no campo.
ValorComponenteStringvazioImagem PNG base64 inicial ou capturada.
ObrigatoriaBooleanFalseMarca o hidden como obrigatorio para validacao HTML5.
AlturaInteger220Altura da area de assinatura em pixels.
CorCanetaString#111827Cor do traco.
EspessuraCanetaDecimal2.5Espessura do traco.
TextoPlaceholderStringAssine dentro da areaTexto exibido enquanto nao ha assinatura.
OnClientChangeStringvazioJavaScript executado quando a assinatura muda. Recebe signaturePad e value.
<fs:FSSignaturePad runat="server" ID="AssinaturaDemo" TextoComponente="Assinatura digital" Obrigatoria="true" Altura="190" CorCaneta="#0d6efd" TextoPlaceholder="Assine aqui" />

FSQRCode

Gera QR Code para texto, URL, Wi-Fi, e-mail, telefone, SMS e payload PIX pronto, usando imagem externa configuravel. Por padrao usa PNG e mostra um aviso se o navegador bloquear o gerador remoto.

PropriedadeTipoPadraoDescricao
TextoComponenteStringQR CodeRotulo exibido no campo.
TipoConteudoStringtextoAceita texto, url, wifi, email, telefone, sms e pix.
ValorComponenteStringvazioValor base para texto, URL ou payload pronto.
PixPayloadStringvazioPayload PIX EMV ja montado para gerar QR Code PIX.
WifiSsid / WifiSenhaStringvazioDados usados quando TipoConteudo="wifi".
TamanhoInteger180Tamanho da imagem entre 80 e 800 pixels.
Cor / CorFundoString#111827 / #ffffffCores do QR Code.
FormatoImagemStringpngFormato solicitado ao gerador. Aceita png, jpg, jpeg, gif e svg.
UrlServicoStringapi.qrserver.comEndpoint usado para gerar a imagem. Pode ser trocado por servico proprio.
<fs:FSQRCode
    runat="server"
    ID="QRCodeDemo"
    TextoComponente="QR Code da documentacao"
    TipoConteudo="url"
    Url="Docs.aspx"
    Tamanho="160"
    Cor="#198754" />

FSFileList

Lista visual de arquivos cadastrados.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do bloco.
TextoComponenteString-Texto do label.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia.
ArquivosStringvazioLista no formato arquivo|tamanho.
BasePathString/uploads/Caminho base dos links.
MostrarTamanhoBooleanFalseExibe badge com tamanho.
<fs:FSFileList runat="server" ID="ListaArquivos" ID_Componente="9" TextoComponente="Arquivos cadastrados" Arquivos="contrato.pdf|1.2 MB;briefing.pdf|840 KB" MostrarTamanho="true" />

FSReportBuilder

Construtor visual de relatorios com posicionamento livre no canvas, blocos compactos para montagem rapida, painel lateral direito de propriedades, inclusao por botao, duplo clique ou arrastar, visualizacao em HTML e exportacao via impressao do navegador para PDF.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador visual do componente.
TextoComponenteString-Texto exibido acima do construtor.
LayoutInicialString[]JSON opcional com os blocos iniciais do relatorio.
ValorComponenteStringvazioAlias para o JSON persistido no campo oculto.
TituloRelatorioStringRelatorioValor inicial do estado do relatorio. O titulo final deve ser montado com blocos no canvas.
SubtituloRelatorioStringvazioValor inicial auxiliar do estado. O relatorio nao possui header fixo fora do canvas.
NomeArquivoExportacaoStringrelatorioNome usado na janela de impressao/exportacao.
OrientacaoPaginaStringportraitAceita portrait ou landscape e agora troca a largura e a altura da folha no canvas e no visualizador.
AlturaMinimaCanvasInteger520Altura inicial usada como fallback para a folha quando o layout antigo ainda nao possui AlturaPagina.
AlturaMinimaBlocoInteger10Altura minima visual de cada bloco no construtor e valor inicial usado na criacao de novos blocos.
LarguraRelatorioString960pxLargura inicial usada como fallback para layouts antigos. No editor atual o usuario escolhe um preset de papel ou o modo Personalizavel.
MargemHorizontalRelatorioString10pxMargem interna aplicada nas laterais da area de montagem. Continua editavel independentemente do papel escolhido.
MostrarPreviewInicialBooleanFalseJa abre a area de visualizacao quando a pagina carrega.
FonteDadosJsonStringvazioJSON opcional para simular ou alimentar registros sem depender do banco no ambiente de teste.
TipoFonteDadosStringnonePropriedade legada. O editor novo inicia o campo Fonte de dados em branco e so mostra valor quando o relatorio salvo possui esse metadado persistido.
ComandoFonteDadosStringvazioPropriedade legada. O campo Comando SQL ou StoreProcedure agora nasce em branco e so volta preenchido ao abrir um relatorio salvo com esse valor.
OrigemParametrosFonteDadosStringnonePropriedade legada. O seletor Parametros inicia em branco e a origem efetiva continua sendo definida por linha na grade.
DefinicaoParametrosFonteDadosStringvazioPropriedade legada. A grade Parametros da consulta inicia vazia e so e preenchida quando o relatorio salvo possui essa definicao persistida.
ConnectionStringNameStringvazioNome da connection string no Web.config usada para consultar MSSQL.
ConnectionStringStringvazioConnection string completa informada diretamente no componente.
SelectCommandStringvazioConsulta SQL que abastece o relatorio. Cada linha retornada vira uma folha.
MaximoRegistrosFonteDadosInteger50Limita a quantidade de registros carregados na visualizacao/exportacao.
HabilitarPersistenciaBooleanFalseExibe os botoes para salvar e listar relatorios salvos no banco.
NomeTabelaPersistenciaStringFS_ReportBuilderRelatoriosNome da tabela SQL usada para armazenar o estado completo do construtor.
HabilitarImportacaoExportacaoJsonBooleanTrueMostra botoes para baixar o estado do layout em JSON e importar um JSON colado pelo usuario.
HabilitarDuplicarBlocoBooleanTrueMostra acao para duplicar o bloco selecionado.
HabilitarSnapGradeBooleanTrueAlinha o movimento dos blocos a uma grade.
TamanhoGradeSnapInteger10Tamanho da grade de alinhamento em pixels.
Blocos suportados: titulo, subtitulo, texto, card, destaque, tabela, tabelajson, assinatura, separador, imagem e dados. A paleta sempre carrega todos esses blocos configurados no componente. O canvas mostra apenas tipo, posicao e tamanho; ao selecionar um bloco, o painel lateral direito libera alinhamento, fonte, tamanho da fonte em px, tamanho do bloco e coordenadas X/Y. No bloco Texto tambem existem os campos Cor da fonte, Borda, Cor da borda, Negrito, Italico e Sublinhado. O bloco Card acrescenta ainda Cor de fundo para destacar secoes especificas do relatorio. O relatorio agora e 100% montado no canvas, sem header fixo fora da folha. Os presets A4, Carta, A3, Legal e A5 travam largura e altura; somente Personalizavel libera a digitacao manual. O bloco de imagem possui upload direto para ~/FSReport/img, cria a pasta automaticamente quando necessario e salva o arquivo com nome aleatorio. No topo do construtor existem os campos de fonte de dados e a grade de parametros por linha com Parametro, Origem, Variavel e Tipo. O bloco Tabela Json aceita um array JSON de objetos e monta as colunas automaticamente a partir das chaves do primeiro item; se quiser limitar ou reordenar colunas, informe os nomes em Meta separados por ;. Em relatorio novo esses campos iniciam em branco; eles so voltam preenchidos ao abrir um relatorio salvo que ja tenha esses metadados persistidos. Isso permite misturar, por exemplo, @ID_Usuario vindo de Session com @ID vindo de QueryString. Quando a persistencia estiver habilitada, o componente salva os metadados do relatorio em uma tabela e o layout em outra, com um registro por bloco. Tambem oferece as acoes Salvar, Salvar como copia e Excluir.
O canvas trabalha com posicionamento livre e visual simplificada. Isso acelera a montagem de linhas com blocos independentes, por exemplo logo de 300px na esquerda e titulo de 600px ao lado, sem poluir a area central com formularios. No bloco de imagem, o preview e o viewer esticam a imagem para ocupar 100% da area definida no bloco. As propriedades visuais adicionais de Texto e Card tambem ficam persistidas dentro do EstadoJson do relatorio, entao nao exigem novas colunas na tabela de blocos.

Tabelas SQL necessarias

Para habilitar salvar e continuar a edicao de relatorios, crie as tabelas abaixo no mesmo banco referenciado por ConnectionString ou ConnectionStringName. O padrao do componente usa o prefixo FS_. O botao salvar abre um popup proprio do componente para informar o nome do relatorio e nao depende da validacao HTML dos outros campos da pagina. O componente tambem permite salvar uma copia e excluir relatorios salvos.

CREATE TABLE dbo.FS_ReportBuilderRelatorios (
    ID_Relatorio INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    ID_Componente INT NOT NULL,
    NomeRelatorio NVARCHAR(150) NOT NULL,
    TituloRelatorio NVARCHAR(200) NULL,
    SubtituloRelatorio NVARCHAR(500) NULL,
    NomeArquivoExportacao NVARCHAR(200) NULL,
    OrientacaoPagina NVARCHAR(20) NULL,
    TipoPapel NVARCHAR(30) NULL,
    LarguraRelatorio NVARCHAR(40) NULL,
    AlturaPagina INT NULL,
    MargemHorizontalRelatorio NVARCHAR(40) NULL,
    AlturaMinimaCanvas INT NULL,
    AlturaMinimaBloco INT NULL,
    TipoFonteDados NVARCHAR(20) NULL,
    ComandoFonteDados NVARCHAR(MAX) NULL,
    OrigemParametros NVARCHAR(20) NULL,
    DefinicaoParametros NVARCHAR(MAX) NULL,
    EstadoJson NVARCHAR(MAX) NOT NULL,
    DataCriacao DATETIME NOT NULL CONSTRAINT DF_FS_ReportBuilderRelatorios_DataCriacao DEFAULT (GETDATE()),
    DataAtualizacao DATETIME NOT NULL CONSTRAINT DF_FS_ReportBuilderRelatorios_DataAtualizacao DEFAULT (GETDATE())
);

CREATE INDEX IX_FS_ReportBuilderRelatorios_Componente_DataAtualizacao
    ON dbo.FS_ReportBuilderRelatorios (ID_Componente, DataAtualizacao DESC);

CREATE TABLE dbo.FS_ReportBuilderBlocos (
    ID_Bloco INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    ID_Relatorio INT NOT NULL,
    Ordem INT NOT NULL,
    BlocoIdCliente NVARCHAR(80) NOT NULL,
    Tipo NVARCHAR(50) NOT NULL,
    Titulo NVARCHAR(MAX) NULL,
    Conteudo NVARCHAR(MAX) NULL,
    Meta NVARCHAR(MAX) NULL,
    ImageUrl NVARCHAR(MAX) NULL,
    TextAlign NVARCHAR(20) NULL,
    FontFamily NVARCHAR(200) NULL,
    FontSize INT NOT NULL,
    SizeClass NVARCHAR(10) NULL,
    PosX INT NOT NULL,
    PosY INT NOT NULL,
    BlockWidth INT NOT NULL,
    BlockHeight INT NOT NULL,
    CONSTRAINT FK_FS_ReportBuilderBlocos_Relatorio
        FOREIGN KEY (ID_Relatorio) REFERENCES dbo.FS_ReportBuilderRelatorios(ID_Relatorio)
        ON DELETE CASCADE
);

CREATE INDEX IX_FS_ReportBuilderBlocos_Relatorio_Ordem
    ON dbo.FS_ReportBuilderBlocos (ID_Relatorio, Ordem);
Se a tabela FS_ReportBuilderRelatorios ja existir em producao, basta acrescentar as colunas abaixo para liberar os tamanhos de papel persistidos sem perder os dados atuais.
IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'TipoPapel') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD TipoPapel NVARCHAR(30) NULL;

IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'AlturaPagina') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD AlturaPagina INT NULL;

IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'TipoFonteDados') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD TipoFonteDados NVARCHAR(20) NULL;

IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'ComandoFonteDados') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD ComandoFonteDados NVARCHAR(MAX) NULL;

IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'OrigemParametros') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD OrigemParametros NVARCHAR(20) NULL;

IF COL_LENGTH('dbo.FS_ReportBuilderRelatorios', 'DefinicaoParametros') IS NULL
    ALTER TABLE dbo.FS_ReportBuilderRelatorios ADD DefinicaoParametros NVARCHAR(MAX) NULL;
No bloco Texto existe o checkbox Data Atual. Quando marcado, o componente acrescenta automaticamente a data atual por extenso logo apos o conteudo digitado, por exemplo 14 de Abril de 2026.
A exportacao para PDF usa a janela de impressao do navegador sobre a visualizacao gerada em HTML. Isso elimina dependencias extras e funciona bem com a opcao Salvar como PDF dos navegadores modernos. O tamanho da folha do PDF acompanha o papel e a orientacao selecionados no construtor.
<fs:FSReportBuilder
    runat="server"
    ID="RptBuilder"
    ID_Componente="11"
    TextoComponente="Construtor de relatorio"
    TituloRelatorio="Relatorio de performance comercial"
    SubtituloRelatorio="Visualizacao pronta para impressao e exportacao em PDF"
    NomeArquivoExportacao="relatorio-performance-comercial"
    OrientacaoPagina="portrait"
    LarguraRelatorio="920px"
    MargemHorizontalRelatorio="40px"
    AlturaMinimaCanvas="560"
    AlturaMinimaBloco="180"
    MostrarPreviewInicial="true"
    HabilitarPersistencia="true"
    ConnectionStringName="Conexao"
    NomeTabelaPersistencia="FS_ReportBuilderRelatorios" />

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        RptBuilder.FonteDadosJson = "[{""Cliente"":""Alpha Tech"",""Cidade"":""Sao Paulo"",""Valor"":""12500,00""}]"
        RptBuilder.LayoutInicial = "[{""type"":""titulo"",""content"":""Relatorio - {{Cliente}}""},{""type"":""imagem"",""imageUrl"":""{{LogoUrl}}""},{""type"":""dados"",""meta"":""Cliente;Cidade;Valor""}]"
    End If
End Sub

FSReportViewer

Componente somente leitura para exibir um relatorio salvo fora do ambiente administrativo, ideal para paginas publicas ou areas de consulta.

PropriedadeTipoPadraoDescricao
NomeDaConexaoString-Nome da connection string no Web.config usada para abrir o banco.
ID_RelatorioInteger-Identificador do relatorio salvo em FS_ReportBuilderRelatorios.
O componente carrega o cabecalho em FS_ReportBuilderRelatorios e os blocos em FS_ReportBuilderBlocos. Ele nao possui ferramentas de edicao nem dependencias de validacao da pagina. O visualizador respeita o papel salvo, a orientacao da folha, a margem lateral e os blocos posicionados no construtor, cria novas paginas automaticamente quando o layout ultrapassa a altura util da folha e tambem multiplica a paginacao quando a fonte de dados gera varias folhas a partir de registros diferentes. As quatro acoes do topo continuam disponiveis: Imprimir para todas as folhas, Imprimir Atual para o conjunto visivel no momento, Exportar PDF para todas e Exportar Atual para o conjunto visivel. Essas acoes abrem um documento isolado contendo apenas o FSReportViewer, sem o restante da pagina. A navegacao entre folhas segue o padrao da grid, com paginacao numerada e seletor Por pagina iniciado em 1, sempre limitado pelo total real de folhas renderizadas.
<fs:FSReportViewer
    runat="server"
    ID="RptViewer"
    NomeDaConexao="Conexao"
    ID_Relatorio="15" />

FSGrid

Grid declarativo para exibir tabelas HTML no padrão Bootstrap 5 sem depender de GridView.

PropriedadeTipoPadraoDescricao
ID_ComponenteInteger-Identificador do grid.
TextoComponenteString-Titulo/label acima da tabela.
IDComponentePaiInteger0Controla inicio oculto.
ComponenteFilhoStringvazioAtributo de dependencia via data-toggle-ids.
HabilitarDataSourceBooleanFalseLiga a leitura direta do banco via ADO.NET.
ConnectionStringNameStringvazioNome da connection string no Web.config.
ConnectionStringStringvazioConnection string direta, usada quando ConnectionStringName nao for informado.
ProviderNameStringSystem.Data.SqlClientProvider ADO.NET usado para conexao e CRUD.
SelectCommandStringvazioSQL base para leitura e geracao automatica do CRUD.
DataKeyNameStringprimeira colunaChave do registro quando a PK nao vier do provider.
FSGridItemControle filhovazioDefine cada coluna diretamente dentro do FSGrid com nome, descricao, tipo e regras de visibilidade.
DadosStringvazioDados manuais separados por ;; e colunas por |. Pode ser preenchido no Page_Load.
ResponsivoBooleanTrueEnvolve a tabela em table-responsive. A grade continua ocupando 100% do bloco e quebra o conteudo das celulas para reduzir a necessidade de rolagem horizontal.
ListradoBooleanTrueAplica table-striped.
ComBordaBooleanTrueAplica table-bordered.
HoverBooleanTrueAplica table-hover.
CompactoBooleanFalseAplica table-sm.
CabecalhoEscuroBooleanFalseUsa table-dark no cabecalho.
HabilitarToolbarBooleanFalseRenderiza uma toolbar acima da tabela.
ToolbarHtmlStringvazioHTML opcional com botoes e acoes customizadas.
HabilitarMoverColunasBooleanFalsePermite reordenar as colunas arrastando os titulos.
HabilitarOrdenacaoBooleanFalseAtiva ordenacao clicando no titulo da coluna.
HabilitarFiltroColunaBooleanFalseMostra um filtro individual abaixo de cada cabecalho.
HabilitarBuscaToolbarBooleanFalseMostra a busca global na toolbar.
ColunasBuscaToolbarStringvazioLista de colunas separadas por ;. Se vazio, pesquisa em todas.
HabilitarPaginacaoBooleanFalseAtiva a paginacao no rodape da grid.
HabilitarSelecaoItensPorPaginaBooleanFalseMostra seletor de quantidade por pagina no rodape, ao lado direito da paginacao.
HabilitarSeletorColunasBooleanFalseMostra um dropdown na toolbar para o cliente ocultar ou exibir colunas da grade.
HabilitarExportacaoBooleanFalseAdiciona exportacao nativa em PDF, CSV e XLS.
ExtensoesExportacaoStringPDF;CSV;XLSLista de formatos disponiveis separada por ;. Aceita PDF, CSV, XLS e XLSX como alias legado para Excel.
ItensPorPaginaInteger20Quantidade inicial de registros por pagina.
OpcoesItensPorPaginaString10;20;50;100Valores permitidos no seletor de pagina.
ModalColunasInteger2Define em quantas colunas o modal de novo/edicao sera dividido. Aceita de 1 a 4.
TamanhoModalStringlgTamanho do modal de novo/edicao. Aceita sm, lg, xl e fullscreen.
HabilitarNovoBooleanFalseMostra o botao Novo na toolbar, com icone e modal.
HabilitarEditarBooleanFalseMostra o botao de editar na primeira coluna, com icone e modal.
HabilitarExcluirBooleanFalseMostra o botao de excluir na ultima coluna, com icone e modal.
HabilitarSelecaoMassaBooleanFalseAdiciona checkboxes por linha e seletor da pagina atual.
HabilitarAcoesLoteBooleanFalseExibe barra de acoes quando ha linhas selecionadas.
AcoesLoteHtmlStringvazioHTML opcional para botoes de lote. Use data-fs-grid-batch para disparar callback client-side.
AcoesCustomizadasHtmlStringvazioHTML por linha em coluna extra. Aceita tokens {key} e {rowIndex}.
SalvarPreferenciasUsuarioBooleanFalsePersiste ordem/visibilidade de colunas e tamanho da pagina em localStorage.
ChavePreferenciasUsuarioStringClientIDChave usada no localStorage para separar preferencias por usuario/tela.
MensagemVaziaStringNenhum registro encontrado.Texto exibido quando nao ha linhas.
No modo manual, Dados usa ;; para separar registros e | para separar colunas. A configuracao visual e funcional da grade deve ser feita pelos itens filhos FSGridItem. Tipos suportados: text, textarea, int, decimal, money, date, datetime, checkbox, switch, combobox, radiobutton, tagbox, color e upload. O tipo legado number continua aceito como alias de decimal.
Os recursos de interacao da grade sao todos opcionais: mover colunas, ordenar, filtrar por coluna com atualizacao automatica durante a digitacao sem perder foco, busca global na toolbar, seletor de colunas, exportacao configuravel em PDF/CSV/XLS, paginacao e seletor de itens por pagina no rodape. A exportacao usa os dados filtrados, ordenados e com as colunas visiveis no momento; CSV baixa com separador ponto e virgula para abrir corretamente no Excel pt-BR, XLS baixa em formato Excel compativel e PDF abre uma janela pronta para impressao/salvar como PDF. Todos entram desligados por padrao. A renderizacao da tabela foi ajustada para ocupar 100% do bloco e quebrar textos longos no cabecalho e nas celulas.
Para Novo, Editar e Excluir, use uma consulta simples baseada em uma tabela com chave primaria. O componente usa DbCommandBuilder para gerar o CRUD automatico e abrir tudo em modal Bootstrap.
Propriedade do FSGridItemTipoPadraoDescricao
NameString-Nome do campo/coluna no dataset ou na linha manual.
DescricaoStringigual a NameTitulo exibido no cabecalho e no modal.
TituloStringvazioAlias opcional para o titulo. E usado quando Descricao nao for informada.
TipoCampoStringtextTipo do campo: text, textarea, int, decimal, money, date, datetime, checkbox, switch, combobox, radiobutton, tagbox, color ou upload. number segue como alias legado para decimal.
TipoStringvazioAlias opcional para TipoCampo.
VisivelBooleanTrueControla se a coluna aparece na tabela.
VisivelNovoBooleanTrueControla se o campo aparece no modal de novo registro.
VisivelEditarBooleanTrueControla se o campo aparece no modal de edicao.
ObrigatorioBooleanFalseAplica required no campo do modal.
PlaceholderStringvazioTexto de orientacao no campo do modal.
MascaraStringvazioRenderiza o atributo data-mask para uso com plugins externos.
OpcoesStringvazioLista separada por ; usada nos tipos combobox, radiobutton e como sugestao no tagbox.
MaxTagsInteger0Limite maximo de tags para colunas tagbox. 0 significa sem limite.
PermitirNovasTagsBooleanTruePermite incluir tags nao listadas em Opcoes no editor modal.
SeparadorString;Separador usado para salvar o valor final da coluna tagbox.
CoresTagsStringvazioMapa de cores por tag. Exemplo: Tecnologia:#0d6efd;Suporte:#198754.
CorTagPadraoString#0d6efdCor aplicada quando a tag nao existir no mapa.
UrlBuscaAssincronaStringvazioEndpoint JSON opcional para complementar as sugestoes do tagbox enquanto o usuario digita.
ParametroBuscaAssincronaStringtermNome do parametro enviado ao endpoint remoto do tagbox.
MinimoCaracteresBuscaInteger2Quantidade minima de caracteres para acionar a busca remota no editor modal.
LimiteSugestoesInteger8Quantidade maxima de sugestoes exibidas no dropdown do tagbox.
LinhasInteger4Quantidade de linhas usada no tipo textarea.
PastaUploadString~/uploadsPasta usada pelo tipo upload para salvar o arquivo no servidor. Aceita caminho virtual, por exemplo ~/uploads/grid.
ExtensoesPermitidasStringvazioLista separada por ; com extensoes permitidas no tipo upload.
TamanhoMaximoKBInteger0Limite de tamanho do arquivo em KB para o tipo upload.
PrefixoArquivoStringvazioPrefixo usado para compor o nome final do arquivo salvo pela grid.
LarguraStringvazioLargura da coluna em CSS, por exemplo 120px ou 15%.
ClasseCssStringvazioClasse aplicada na coluna e no editor do modal.
ColunasModalInteger1Quantidade de colunas do layout do modal que esse item vai ocupar. Funciona em conjunto com ModalColunas do grid.
SomenteLeituraBooleanFalseBloqueia edicao no modal e impede persistencia do valor no CRUD automatico.
Sugestao de mapeamento entre componentes e tipos da grid: FSTxtBox=text, FSTextArea=textarea, FSNumericBox int=int, FSNumericBox decimal=decimal, FSCurrencyBox=money, FSCalendario=date, FSDateTimePicker=datetime, FSTagBox=tagbox, FSCheckBoxList=tagbox, FSSwitch=switch, FSSelectBox=combobox, FSRadioButtonList=radiobutton, FSColorPicker=color e FSUpload=upload.
<fs:FSGrid
    runat="server"
    ID="GridComponentes"
    ID_Componente="10"
    TextoComponente="Grid de componentes"
    HabilitarToolbar="true"
    HabilitarMoverColunas="true"
    HabilitarOrdenacao="true"
    HabilitarFiltroColuna="true"
    HabilitarBuscaToolbar="true"
    ColunasBuscaToolbar="Codigo;Descricao;Status"
    HabilitarPaginacao="true"
    HabilitarSelecaoItensPorPagina="true"
    HabilitarSeletorColunas="true"
    HabilitarExportacao="true"
    ExtensoesExportacao="PDF;CSV;XLS"
    ItensPorPagina="20"
    ModalColunas="2"
    TamanhoModal="xl"
    Responsivo="true"
    Listrado="true"
    ComBorda="true"
    Hover="true">
    <fs:FSGridItem Name="Codigo" Descricao="Codigo" TipoCampo="int" Visivel="true" VisivelNovo="false" VisivelEditar="false" Largura="90px" ClasseCss="fw-semibold" />
    <fs:FSGridItem Name="Descricao" Descricao="Descricao" TipoCampo="text" Visivel="true" VisivelNovo="true" VisivelEditar="true" Obrigatorio="true" Placeholder="Informe a descricao" Largura="260px" ColunasModal="2" />
    <fs:FSGridItem Name="Status" Descricao="Status" TipoCampo="text" Visivel="true" VisivelNovo="true" VisivelEditar="true" Placeholder="Ativo, Inativo ou Pendente" Largura="180px" />
    <fs:FSGridItem Name="Tags" Descricao="Tags" TipoCampo="tagbox" Visivel="true" VisivelNovo="true" VisivelEditar="true" Opcoes="Financeiro;Comercial;Operacional;Tecnologia;Suporte" CoresTags="Financeiro:#6f42c1;Comercial:#fd7e14;Operacional:#6c757d;Tecnologia:#0d6efd;Suporte:#198754" UrlBuscaAssincrona="~/Default.aspx?ajaxTags=1" MinimoCaracteresBusca="1" LimiteSugestoes="10" MaxTags="5" Largura="260px" />
    <fs:FSGridItem Name="Valor" Descricao="Valor" TipoCampo="decimal" Visivel="true" VisivelNovo="true" VisivelEditar="true" Obrigatorio="true" Placeholder="0,00" Mascara="money" Largura="160px" ClasseCss="text-nowrap" />
    <fs:FSGridItem Name="DataCadastro" Descricao="Cadastro" TipoCampo="datetime" Visivel="false" VisivelNovo="true" VisivelEditar="true" SomenteLeitura="true" Placeholder="Preenchido automaticamente" />
</fs:FSGrid>
<fs:FSGridItem Name="Observacoes" Descricao="Observacoes" TipoCampo="textarea" Linhas="5" />
<fs:FSGridItem Name="Ativo" Descricao="Ativo" TipoCampo="switch" />
<fs:FSGridItem Name="Categoria" Descricao="Categoria" TipoCampo="combobox" Opcoes="Hardware;Software;Servicos" />
<fs:FSGridItem Name="Prioridade" Descricao="Prioridade" TipoCampo="radiobutton" Opcoes="Alta;Media;Baixa" />
<fs:FSGridItem Name="Tags" Descricao="Tags" TipoCampo="tagbox" Opcoes="API;Dashboard;Relatorio;Financeiro" CoresTags="API:#20c997;Dashboard:#0dcaf0;Relatorio:#6610f2;Financeiro:#6f42c1" UrlBuscaAssincrona="~/Default.aspx?ajaxTags=1" MaxTags="5" />
<fs:FSGridItem Name="Cor" Descricao="Cor" TipoCampo="color" />
<fs:FSGridItem Name="Anexo" Descricao="Anexo" TipoCampo="upload" PastaUpload="~/uploads/grid" ExtensoesPermitidas=".pdf;.docx" TamanhoMaximoKB="5120" PrefixoArquivo="anexo" />
No tipo upload, a grid salva o arquivo fisicamente na pasta configurada em PastaUpload, valida extensao/tamanho quando configurados, aplica PrefixoArquivo ao nome final e persiste no campo do banco o caminho relativo gerado. A visualizacao do arquivo no grid agora abre em modal.
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        GridComponentes.Dados = "1|Alpha Tech|Ativo|12500.00|2026-04-02T09:30;;2|Beta Supply|Pendente|8300.00|2026-04-03T10:15"
    End If
End Sub
<connectionStrings>
  <add name="FSDemo"
       connectionString="Data Source=SERVIDOR;Initial Catalog=BASE;Integrated Security=True"
       providerName="System.Data.SqlClient" />
</connectionStrings>

<fs:FSGrid
    runat="server"
    ID="GridProdutos"
    ID_Componente="11"
    TextoComponente="Produtos"
    HabilitarDataSource="true"
    ConnectionStringName="FSDemo"
    SelectCommand="SELECT Id, Nome, Ativo, DataCadastro, ValorUnitario FROM Produtos"
    DataKeyName="Id"
    HabilitarToolbar="true"
    HabilitarOrdenacao="true"
    HabilitarFiltroColuna="true"
    HabilitarBuscaToolbar="true"
    HabilitarPaginacao="true"
    HabilitarSelecaoItensPorPagina="true"
    HabilitarSeletorColunas="true"
    HabilitarExportacao="true"
    ExtensoesExportacao="CSV;XLS"
    ItensPorPagina="20"
    HabilitarNovo="true"
    HabilitarEditar="true"
    HabilitarExcluir="true"
    Hover="true"
    ComBorda="true">
    <fs:FSGridItem Name="Id" Descricao="Codigo" TipoCampo="int" Visivel="true" VisivelNovo="false" VisivelEditar="false" Largura="90px" ClasseCss="fw-semibold" />
    <fs:FSGridItem Name="Nome" Descricao="Produto" TipoCampo="text" Visivel="true" VisivelNovo="true" VisivelEditar="true" Obrigatorio="true" Placeholder="Nome do produto" Largura="280px" />
    <fs:FSGridItem Name="Ativo" Descricao="Ativo" TipoCampo="text" Visivel="true" VisivelNovo="true" VisivelEditar="true" Largura="140px" />
    <fs:FSGridItem Name="DataCadastro" Descricao="Cadastro" TipoCampo="datetime" Visivel="true" VisivelNovo="false" VisivelEditar="true" SomenteLeitura="true" />
    <fs:FSGridItem Name="ValorUnitario" Descricao="Valor unitario" TipoCampo="decimal" Visivel="true" VisivelNovo="true" VisivelEditar="true" Obrigatorio="true" Placeholder="0,00" Mascara="money" ClasseCss="text-nowrap" />
</fs:FSGrid>