Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe Franco

GridView dinamica + TextBox

Recommended Posts

Preciso exibir na tela algumas informações e para isso estou utilizando o gridview

 

O problema é o seguinte:

 

Preciso exibir essa informação abaixo

 

Imagem Postada

 

e nos espaços em branco preciso exibir um textbox pra pessoa informar a quantidade

 

Eu busco no banco os dados e ponho num DataTable

 

qdo vou preencher cada linha do DataTable eu faço o seguinte

 

'crio um textbox

Dim tx As New TextBox

tx.ID = "txQtd" & i

tx.Width = 25

 

'adiciono na linha do datatable que no meu caso chama tbGrade o valor do array da linha + o textbox

tbGrade.Rows.Add(waLinha(i), tx)

 

O problema é que quando vai exibir os dados na tela em vez de mostrar o componente textbox ele exibe o nome do componete (System.Web.UI.WebControls.TextBox)

 

O grid é montado dinamicamente.

 

Alguem pode me ajudar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não me engano, de uma pesquisada sobre o objeto GridViewHelper, acho que ele vai te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquisei sobre addControls mudei meu codigo e continuou a não funcionar!!

Fiz o seguinte

 

Dim item As New TemplateField ''Criei um objeto do tipo TemplateField 
item.ItemTemplate = New Componte ''Falei que ele recebe o valor da classe Componente
tbGrade.Rows.Add(waLinha(i), item) ''adicionei ele na DataTable

Criei esta classe

 

Public Class Componte

        Implements ITemplate

        Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements ITemplate.InstantiateIn
            Dim tx As TextBox = New TextBox
            tx.ID = "txQtd"
            tx.Width = 25
            tx.DataBind()
            container.Controls.Add(tx)

        End Sub
    End Class

Por fim adiciono O DataTable na GridView

 

pdsGrade.DataSource = tbGrade
pdsGrade.DataBind()

Quando eu rodo a aplicação, ai em vez de aparecer o TextBox aparece escrito TemplateField

 

E debugando o codigo eu vi que não esta entrando na classe Componete

 

Ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro felipe acho que adicionar TextBox a um DataTable não rola não, eu conseguir adicionar novas colunas e através do grid eu adiciono os textbox, segue exemplo.

Load.aspx.cs

using System;
using System.ComponentModel;
using System.Data;
using System.Web.UI;


public partial class load : Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
 	gv.DataSource = GetProducts();
 	gv.DataBind();
	}

	public DataTable GetProducts()
	{
 	var dsStore = new DataSet(); //datasert
 	dsStore.ReadXml(Server.MapPath("~/XMLFile.xml"));
 	DataTable dt = dsStore.Tables["Employee"];

 	var d = new DataColumn {ColumnName = "P", DataType = Type.GetType("System.String")};
 	IContainer container = d.Container;

 	DataColumn[] dataColumns = new[]
 	{
 	new DataColumn{ ColumnName = "P", DataType = Type.GetType("System.String")},
 	new DataColumn { ColumnName = "m", DataType = Type.GetType("System.String") },
 	new DataColumn { ColumnName = "g", DataType = Type.GetType("System.String") },
 	new DataColumn{ ColumnName = "gg", DataType = Type.GetType("System.String")}
	};
 	dt.Columns.AddRange(dataColumns);
 	return dt;
	}
}
página load.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="load.aspx.cs" Inherits="load" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title></title>
</head>
<body>
	<form id="form1" runat="server">
	<div>
 	<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
 	<Columns>
 	<asp:TemplateField>
 	<HeaderTemplate>
 	<table style="width: 400px; text-align: left;">
 	<tr>
 	<td style="width: 40px;">ID</td>
 	<td style="width: 200px;">Nome</td>
 	<td style="width: 40px;">P</td>
 	<td style="width: 40px;">M</td>
 	<td style="width: 40px;">G</td>
 	<td style="width: 40px;">GG</td>
 	</tr>
 	</table>
 	</HeaderTemplate>
 	<ItemTemplate>
 	<table style="width: 400px; text-align: left;">
 	<tr>
 	<td style="width: 40px;">
 	<%# Eval("id") %>
 	</td>
 	<td style="width: 200px;">
 	<%# Eval("name") %>
 	</td>
 	<td style="width: 40px;">
 	<asp:TextBox ID="p" runat="server" Width="30" />
 	</td>
 	<td style="width: 40px;">
 	<asp:TextBox ID="m" runat="server" Width="30" />
 	</td>
 	<td style="width: 40px;">
 	<asp:TextBox ID="d" runat="server" Width="30" />
 	</td>
 	<td style="width: 40px;">
 	<asp:TextBox ID="gg" runat="server" Width="30" />
 	</td>
 	</tr>
 	</table>
 	</ItemTemplate>
 	</asp:TemplateField>
 	</Columns> 	
 	</asp:GridView>
	</div>
	</form>
</body>
</html>
XML
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
	<Employee>
		<ID>8</ID>
		<Name>Joe</Name>
	</Employee>
	<Employee>
		<ID>9</ID>
		<Name>João</Name>
	</Employee>
	<Employee>
		<ID>10</ID>
		<Name>maria</Name>
	</Employee>
</NewDataSet>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro felipe acho que adicionar TextBox a um DataTable não rola não, eu conseguir adicionar novas colunas e através do grid eu adiciono os textbox, segue exemplo.

 

 

A grid eh dinamica eu nunca sei quantas linhas e quantas colunas vão aparecer por isso tenho que criar os itemstemplate por linha de codigo.

 

Simplificando minha duvida seria

 

Quero um componente web no qual onde estiver espaços vazios eu possa digitar algo para recuperar depois lendo cada linha do grid

 

Seria um componete igual ao DataGridView para aplicações DeskTop, nele onde existe espaços em branco é possivel inserir algum texo!

 

Sabe como posso fazer isso para web?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo como:

 

DataColumn[] dataColumns = new[]
 	{
 	new DataColumn{ ColumnName = "P", DataType = Type.GetType("System.String"), DefaultValue = "p"},
 	new DataColumn { ColumnName = "m", DataType = Type.GetType("System.String"), DefaultValue = "m" },
 	new DataColumn { ColumnName = "g", DataType = Type.GetType("System.String"), DefaultValue = "g" },
 	new DataColumn{ ColumnName = "gg", DataType = Type.GetType("System.String"), DefaultValue = "gg"}
 	};

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.