Usuário com melhor resposta
Gerar matriz como planilha em tempo de execução

Pergunta
-
Caros,
Estou tentando desenvolver uma espécie de planilha em c#, onde carrego os dados q serão o título da planilha, e depois carrego outros dados que carregarão uma coluna lateral.
Será mais ou menos assim:
texto1 texto2 text3 texto4 texto5 <- titulos, vêm do banco
nome1 [ ] [ ] [ ] [ ] [ ] <- nomes, vê do banco
nome2 [ ] [ ] [ ] [ ] [ ]
nome3 [ ] [ ] [ ] [ ] [ ]
os espaços em branco serão textbox gerados automaticamente para preenchimento.
O meu problema é, como desenvolver isso?? tentei com repeater, mas não rolou. Alguém tem alguma idéia de como posso fazer essa página?
Desde já agradeço a atenção.
Respostas
-
Caros, consegui resolver com esse link http://stackoverflow.com/questions/4476174/asp-net-and-c-sharp-fill-a-table-with-data-from-database. obrigado pelas respostas!!..
- Marcado como Resposta leandro.perdizo sexta-feira, 18 de maio de 2012 19:29
Todas as Respostas
-
Sugestao: Faça um sql no banco que retorne as colunas pelo titulo e o nome das linhas; mais ou menos assim:
SELECT NOMARQ, ' ' AS COLUNA1, '' AS COLUNA2, '' AS COLUNA3 FROM TABARQ
voce pode então utilizar um grid que terá Label na coluna 1, e textbox nas demais colunas.
<asp:Panel ID="pnlGrid" runat="server" Width="98%" ScrollBars="Vertical" Height="100%" Style="border-bottom: solid 1px DarkGrey; border-left: solid 1px DarkGrey; overflow-x: hidden;" ondatabinding="pnlGrid_DataBinding"> <asp:GridView ID="grvClasseIndicator" runat="server" Width="100%" AllowPaging="False" OnRowDataBound="grvClasseIndicator_RowDataBound" EmptyDataText="Pesquisa não encontrada!" DataKeyNames="NOMARQ" ShowHeader="False" AutoGenerateColumns="False" CssClass="GridInPanel" ondatabound="grvClasseIndicator_DataBound"> <PagerSettings Position="Bottom" Mode="Numeric"></PagerSettings> <HeaderStyle CssClass="header_tabela2" /> <Columns> <asp:BoundField DataField="NOMARQ" Visible="false" HeaderText="NOME ARQ"> <ItemStyle Width="0%" HorizontalAlign="center"></ItemStyle> <HeaderStyle HorizontalAlign="Center"></HeaderStyle> </asp:BoundField> <asp:TemplateField HeaderText="COLUNA1" Visible="true"> <ItemStyle Width="8%" HorizontalAlign="Center" /> <ItemTemplate> <asp:TextBox ID="txtCOLUNA1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"COLUNA1") %>'></asp:TextBox> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" /> </asp:TemplateField> <asp:TemplateField HeaderText="COLUNA2" Visible="true"> <ItemStyle Width="8%" HorizontalAlign="Center" /> <ItemTemplate> <asp:TextBox ID="txtCOLUNA2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"COLUNA2") %>'></asp:TextBox> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" /> </asp:TemplateField> ... colocar os demais textbox... </Columns> <RowStyle CssClass="entradadado1" /> <AlternatingRowStyle CssClass="entradadado2" /> </asp:GridView> </asp:Panel>
Você busca do banco de dados e fiz o databind() do grid.
A voce pode fazer o que deseja, via javascript, por exemplo, colocar formatação no textbox pra digitar valor e etc.
Espero que te ajude...
-
Olá José,
obrigado pelo seu retorno, mas essa solução não funciona pra mim. A qtde de títulos é variável, podem vir 2 ou 10, por exemplo. Eu preciso primeiro gerar uma linha com os titulos, a partir da coluna 2 e após isso, gerar os nomes na coluna 1, como coloquei no desenho.
-
meu resultado final tem q ser assim, isso lembrando q a quantidade de títulos e nomes pode ser variável:
<table> <tr> <td></td> <td>teste 1</td> <td>teste 2</td> <td>teste 3</td> <td>teste 4</td> </tr> <tr> <td>nome 1</td> <td><asp:TextBox ID="t_1" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></td> </tr> <tr> <td>nome 2</td> <td><asp:TextBox ID="TextBox4" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox5" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox6" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox7" runat="server"></asp:TextBox></td> </tr> <tr> <td>nome 3</td> <td><asp:TextBox ID="TextBox8" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox9" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox10" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox11" runat="server"></asp:TextBox></td> </tr> <tr> <td>nome 3</td> <td><asp:TextBox ID="TextBox12" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox13" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox14" runat="server"></asp:TextBox></td> <td><asp:TextBox ID="TextBox15" runat="server"></asp:TextBox></td> </tr> </table>
-
Leandro,
Você deve utilizar o controle TABLE do Toolkit. Não é o HTMLControl, e sim o Table, que fica acima do TextBox. A construção de matriz programaticamente é feita com 2 estruturas de repetição. Uma para as <tr> e outra para as <td>. As Tags <table> deverão ser fixas.
É natural que você deva precisar de um recordset somente para recuperas os dados das linhas e outro, dentro do for de cada linha, para recuperar as colunas.
Rafael Santos
E-mail: rsdsantos@gmail.com
Pequeno Gafanhoto -
-
Caros, consegui resolver com esse link http://stackoverflow.com/questions/4476174/asp-net-and-c-sharp-fill-a-table-with-data-from-database. obrigado pelas respostas!!..
- Marcado como Resposta leandro.perdizo sexta-feira, 18 de maio de 2012 19:29
-
Então, como eu disse, o ideal é usar duas estruturas de repetição (For, While, Foreach), e não vincular um DataSource diretamente a Table.
Rafael Santos
E-mail: rsdsantos@gmail.com
Pequeno Gafanhoto- Editado Rafa Santos sexta-feira, 18 de maio de 2012 19:30