Ir para conteúdo
Fórum Script Brasil
  • 0

Desculpe Encher, Mais To Com + Duvidas...


Steven Tyler

Pergunta

então galeira, so eu enchendo mais uma vez voces.....

eu fiz gracas ao graymalkin funcionar o que eu queria.... eu queria q uma datagrid buscasse em um banco dados, e esses dados fossem mostrados na grid em forma de link e enviando paramentros para outra pagina, ai vai o meu codigo que deu certo ...

private void Page_Load(object sender, System.EventArgs e)
  {
  	{
  	
OleDbConnection objConexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\datagrid\\db\\dados.mdb;");
	string strSQL = "select titulo from estrutura";
	OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConexao);
  	DataSet ds = new DataSet();
  	da.Fill(ds,"estrutura");
  	objConexao.Close();

  	
  HyperLinkColumn col1 = new HyperLinkColumn();
  	
                 col1.DataNavigateUrlField = "Titulo";
                 col1.DataTextField = "Titulo";
	col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";
  col1.HeaderText = "Titulo";
  	
  DataGrid1.Columns.Add(col1);
  	
  DataGrid1.AutoGenerateColumns = false;
  DataGrid1.DataSource = ds.Tables["estrutura"].DefaultView;
  DataGrid1.DataBind();
  }
ta perfeito, so que me pediram para não enviar parametros atraves do link
col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";
e sim atraves de um Server.Transfer parece.... obs.. nunca usei isso, eu tentei aqui e deu errado... se eu colocar um Server.Transfer("procura.aspx?titulo={0}"); no form load da pagina inicial, ai mesmo onde eu coloquei aqueles codigos acima, n da certo, dai eu pensei q tivesse um evento click no datagrid mais não tem..... dai eu achei só isso de evento no datagrid...
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)

pus o Server.Transfer("procura.aspx?titulo={0}"); nesse evento....

e no load da pagina procura.aspx, se eu quiser jogar o valor de procura.aspx?titulo={0}" numa label, como que eu faço, como que eu faço para enviar um parametro para a outra pagina sem ser atraves do link, como que eu faço, se alguém puder me ajudar, obrigado.....fui......

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

A função da HyperLinkColumn, que é utilizada na DataGrid, é justamente, como o nome sugere, criar uma coluna de hyperlink (ou seja, um link). Para fazer outra coisa que não seja um hyperlink, você vai precisar utilizar o exemplo que eu forneci naquele outro tópico que sugeri ao seu primeiro post. Naquele exemplo utiliza-se um LinkButton que permite associar uma outra ação (que não seja de um link), como é o caso que você quer (o Server.Transfer()).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
A função da HyperLinkColumn, que é utilizada na DataGrid, é justamente, como o nome sugere, criar uma coluna de hyperlink (ou seja, um link). Para fazer outra coisa que não seja um hyperlink, você vai precisar utilizar o exemplo que eu forneci naquele outro tópico que sugeri ao seu primeiro post. Naquele exemplo utiliza-se um LinkButton que permite associar uma outra ação (que não seja de um link), como é o caso que você quer (o Server.Transfer()).

Abraços,

Graymalkin

graymalkim...

eu tenho que usar mesmo o hyperlink cara, ta otimo do jeito que ta entendeu?

só que o parametro esta sendo enviado a outra pagina atraves da url entendeu?

e é isso que eu quero saber, se tem um jeito de eu enviar o parametro sem ser atraves da url.....

seria assim... na url apontar a pagina mesmo "procura.aspx", e uma outra funcao, um outro jeito de enviar o "?Titulo={0}" sem ser ali na url...

col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";

entendeu?

abraços...e valeu...

Link para o comentário
Compartilhar em outros sites

  • 0
A função da HyperLinkColumn, que é utilizada na DataGrid, é justamente, como o nome sugere, criar uma coluna de hyperlink (ou seja, um link). Para fazer outra coisa que não seja um hyperlink, você vai precisar utilizar o exemplo que eu forneci naquele outro tópico que sugeri ao seu primeiro post. Naquele exemplo utiliza-se um LinkButton que permite associar uma outra ação (que não seja de um link), como é o caso que você quer (o Server.Transfer()).

Abraços,

Graymalkin

graymalkim...

eu tenho que usar mesmo o hyperlink cara, ta otimo do jeito que ta entendeu?

só que o parametro esta sendo enviado a outra pagina atraves da url entendeu?

e é isso que eu quero saber, se tem um jeito de eu enviar o parametro sem ser atraves da url.....

seria assim... na url apontar a pagina mesmo "procura.aspx", e uma outra funcao, um outro jeito de enviar o "?Titulo={0}" sem ser ali na url...

col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";

entendeu?

abraços...e valeu...

Aí é que está... Um objeto HyperLinkColumn é justamente um *LINK* e você não vai conseguir alterar isso. Você conseguiria fazer isso em um link de uma página HTML comum? É justamente uma página HTML comum que o usuário recebe (e é o que o browser dele pode interpretar). O máximo que se poderia fazer é utilizar JavaScript, fazendo uma função para chamar uma página (mas o cara ia conseguir ver o link do mesmo jeito, pedindo o código-fonte da página).

Já o LinkButton é, como o nome sugere, um *BOTÃO* que tem a aparência de um *LINK*. Ou seja, nele você pode fazer coisas mais personalizáveis (já que o código vai ser executado no servidor e não no cliente), inclusive chamar o Server.Transfer() que você quer. Você vai continuar possuindo a mesma aparência atual (de um link), porém terá *controle* sobre o que ocorre ao clicar no elemento. Já com a HyperLinkColumn você não tem esse controle porque o *propósito* dela é criar um simples *link* (aquele mesmo que você faz com a tag <a>).

Entendeu? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
A função da HyperLinkColumn, que é utilizada na DataGrid, é justamente, como o nome sugere, criar uma coluna de hyperlink (ou seja, um link). Para fazer outra coisa que não seja um hyperlink, você vai precisar utilizar o exemplo que eu forneci naquele outro tópico que sugeri ao seu primeiro post. Naquele exemplo utiliza-se um LinkButton que permite associar uma outra ação (que não seja de um link), como é o caso que você quer (o Server.Transfer()).

Abraços,

Graymalkin

graymalkim...

eu tenho que usar mesmo o hyperlink cara, ta otimo do jeito que ta entendeu?

só que o parametro esta sendo enviado a outra pagina atraves da url entendeu?

e é isso que eu quero saber, se tem um jeito de eu enviar o parametro sem ser atraves da url.....

seria assim... na url apontar a pagina mesmo "procura.aspx", e uma outra funcao, um outro jeito de enviar o "?Titulo={0}" sem ser ali na url...

col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";

entendeu?

abraços...e valeu...

Aí é que está... Um objeto HyperLinkColumn é justamente um *LINK* e você não vai conseguir alterar isso. Você conseguiria fazer isso em um link de uma página HTML comum? É justamente uma página HTML comum que o usuário recebe (e é o que o browser dele pode interpretar). O máximo que se poderia fazer é utilizar JavaScript, fazendo uma função para chamar uma página (mas o cara ia conseguir ver o link do mesmo jeito, pedindo o código-fonte da página).

Já o LinkButton é, como o nome sugere, um *BOTÃO* que tem a aparência de um *LINK*. Ou seja, nele você pode fazer coisas mais personalizáveis (já que o código vai ser executado no servidor e não no cliente), inclusive chamar o Server.Transfer() que você quer. Você vai continuar possuindo a mesma aparência atual (de um link), porém terá *controle* sobre o que ocorre ao clicar no elemento. Já com a HyperLinkColumn você não tem esse controle porque o *propósito* dela é criar um simples *link* (aquele mesmo que você faz com a tag <a>).

Entendeu? wink.gif

Graymalkin

entendi perfeitamente...

mas tem um porem graymalkin.....

eu tenho q buscar dados de uma *tabela* de um *banco*......

e jogar numa datagrid......

só q com o linkbutton n da pra controlar os dados da dagrid entendeu......

porque ira aparecer por exemplo... 2 registros de uma tabela...

e com o linkbutton n da pra faze esse esquema de os dados da tabela aparecerem na grid em forma de link, porque como você disse é um *botao em forma de link*.... tem algum jeito de n usar o hyperlink na datagrid, e a grid ficar em forma de link com os dados da tabela, e eu puder mandar paramentros para outra pagina sem ser atraves da url?

n sei se você entendeu, eu so quero mandar parametros para outra pagina sem ser atraves da url, mais usando link, só q o linkbutton n da pra usa na grid como eu quero, q eu quero fazer aparecer os dados da tabela na grid... ou sera q da pra usar linkbutton na grid.....

tipo a cada registro q tenha na tabela, por exemplo, busquei numa tabela 2 registros, tem um registro chamado "brasil"....

esse "brasil" aparecee na grid em forma de linkbutton ao invés de aparecer como Hyperlink? e dai eu passar parametros para outrra pagina atraves desse linkbutton?

hehh..nem sei se você entendeu...valeu...

Link para o comentário
Compartilhar em outros sites

  • 0
A função da HyperLinkColumn, que é utilizada na DataGrid, é justamente, como o nome sugere, criar uma coluna de hyperlink (ou seja, um link). Para fazer outra coisa que não seja um hyperlink, você vai precisar utilizar o exemplo que eu forneci naquele outro tópico que sugeri ao seu primeiro post. Naquele exemplo utiliza-se um LinkButton que permite associar uma outra ação (que não seja de um link), como é o caso que você quer (o Server.Transfer()).

Abraços,

Graymalkin

graymalkim...

eu tenho que usar mesmo o hyperlink cara, ta otimo do jeito que ta entendeu?

só que o parametro esta sendo enviado a outra pagina atraves da url entendeu?

e é isso que eu quero saber, se tem um jeito de eu enviar o parametro sem ser atraves da url.....

seria assim... na url apontar a pagina mesmo "procura.aspx", e uma outra funcao, um outro jeito de enviar o "?Titulo={0}" sem ser ali na url...

col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";

entendeu?

abraços...e valeu...

Aí é que está... Um objeto HyperLinkColumn é justamente um *LINK* e você não vai conseguir alterar isso. Você conseguiria fazer isso em um link de uma página HTML comum? É justamente uma página HTML comum que o usuário recebe (e é o que o browser dele pode interpretar). O máximo que se poderia fazer é utilizar JavaScript, fazendo uma função para chamar uma página (mas o cara ia conseguir ver o link do mesmo jeito, pedindo o código-fonte da página).

Já o LinkButton é, como o nome sugere, um *BOTÃO* que tem a aparência de um *LINK*. Ou seja, nele você pode fazer coisas mais personalizáveis (já que o código vai ser executado no servidor e não no cliente), inclusive chamar o Server.Transfer() que você quer. Você vai continuar possuindo a mesma aparência atual (de um link), porém terá *controle* sobre o que ocorre ao clicar no elemento. Já com a HyperLinkColumn você não tem esse controle porque o *propósito* dela é criar um simples *link* (aquele mesmo que você faz com a tag <a>).

Entendeu? wink.gif

Graymalkin

entendi perfeitamente...

mas tem um porem graymalkin.....

eu tenho q buscar dados de uma *tabela* de um *banco*......

e jogar numa datagrid......

só q com o linkbutton n da pra controlar os dados da dagrid entendeu......

porque ira aparecer por exemplo... 2 registros de uma tabela...

e com o linkbutton n da pra faze esse esquema de os dados da tabela aparecerem na grid em forma de link, porque como você disse é um *botao em forma de link*.... tem algum jeito de n usar o hyperlink na datagrid, e a grid ficar em forma de link com os dados da tabela, e eu puder mandar paramentros para outra pagina sem ser atraves da url?

n sei se você entendeu, eu so quero mandar parametros para outra pagina sem ser atraves da url, mais usando link, só q o linkbutton n da pra usa na grid como eu quero, q eu quero fazer aparecer os dados da tabela na grid... ou sera q da pra usar linkbutton na grid.....

tipo a cada registro q tenha na tabela, por exemplo, busquei numa tabela 2 registros, tem um registro chamado "brasil"....

esse "brasil" aparecee na grid em forma de linkbutton ao invés de aparecer como Hyperlink? e dai eu passar parametros para outrra pagina atraves desse linkbutton?

hehh..nem sei se você entendeu...valeu...

É exatamente esta a idéia. Utilizar LinkButtons *ao invés* de HyperLinkColumns. Como eu disse anteriormente, o visual vai ficar igualzinho, porém tendo agora a funcionalidade desejada. Todavia, o esquema de preencher é que vai ser diferente (mas tem a dica naquele outro tópico indicado).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

valeu graymaikin.,...

como que eu faco pra adiconar o LinkButton na datagrid, ao invés de Hyperlink?

tipo no Hyperlink tem os eventos...

col1.DataNavigateUrlField = "Titulo";
col1.DataTextField = "Titulo";
col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";
col1.HeaderText = "Titulo";

e no LinkButton, o que tenho q usar, me ensina como que faz por favor?

valeu...

Link para o comentário
Compartilhar em outros sites

  • 0
valeu graymaikin.,...

como que eu faco pra adiconar o LinkButton na datagrid, ao invés de Hyperlink?

tipo no Hyperlink tem os eventos...

col1.DataNavigateUrlField = "Titulo";
col1.DataTextField = "Titulo";
col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";
col1.HeaderText = "Titulo";

e no LinkButton, o que tenho q usar, me ensina como que faz por favor?

No tópico http://scriptbrasil.com.br/forum/index.php?showtopic=67670 já existe um exemplo disso. Dê uma olhada lá e qualquer coisa, 'stamos aí.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

eu vi esse exemplo....entendi ele....mais nesse exemplo, o linkbutton esta feito no html da pagina n ta?

e como q eu faco pra colocar no codigo c# mesmo, como você fez com o hyperlink....

HyperLinkColumn col1 = new HyperLinkColumn();
col1.DataNavigateUrlField = "Titulo";
col1.DataTextField = "Titulo";
col1.DataNavigateUrlFormatString = "procura.aspx?Titulo={0}";
col1.HeaderText = "Titulo";

como q eu faco com o linkbutton tipo desse jeito ai em cima, no c# mesmo, n no html...? desculpe a ignorancia, n manjo nada...falou..e obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

graymalkin, eu tava vendo aqui, n consegui fazer m oisa n... olha isso

private void Page_Load(object sender, System.EventArgs e)
  {
  	OleDbConnection objConexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\datagrid\\db\\dados.mdb;");
  	string strSQL = "select titulo from estrutura";
  	OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConexao);
  	DataSet ds = new DataSet();
  	da.Fill(ds,"estrutura");
  	objConexao.Close();

  	TemplateColumn tp = new TemplateColumn();
  	DataGrid1.Columns.Add(tp);
  	tp.HeaderText = "Título";
  	tp.ItemTemplate = new ColunaLinkButton();
  
  	DataGrid1.AutoGenerateColumns = false;
  	DataGrid1.DataSource = ds.Tables["estrutura"].DefaultView;
  	DataGrid1.DataBind();
}

note q ta caminhando, mais falta configurar um LinkButton, e é ai q me perco veja essa linha....

tp.ItemTemplate = new ColunaLinkButton();

essa árte ai do *ColunaLinkButton* ta faltando criar esse metodo ou classe certo?

porque eu apenas estava olhando o link q você me passou, e tava assim o codigo...

dai eu tava olhando la o link e enpaquei na parte da classe la, porque to fazendo em c#, e também n entendi nada doq você fez la, você pode me dizer como q faz m c# tudo aquilo, e seila se possivel explicar o codigo... porque ta foda....

tem também um

Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn

e também um

Public Sub ColunaLinkButton_Click(ByVal sender As Object, ByVal e As EventArgs)

nem sei como você chegou ai, você teve q digitar td isso ai, ou você entrou em algum evento do ColunaLinkButton...? tipo o click dele ai.... desculpe encher o saco mais uma vez...falou

Link para o comentário
Compartilhar em outros sites

  • 0
graymalkin, eu tava vendo aqui, n consegui fazer m oisa n... olha isso

private void Page_Load(object sender, System.EventArgs e)
  {
  	OleDbConnection objConexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\datagrid\\db\\dados.mdb;");
  	string strSQL = "select titulo from estrutura";
  	OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConexao);
  	DataSet ds = new DataSet();
  	da.Fill(ds,"estrutura");
  	objConexao.Close();

  	TemplateColumn tp = new TemplateColumn();
  	DataGrid1.Columns.Add(tp);
  	tp.HeaderText = "Título";
  	tp.ItemTemplate = new ColunaLinkButton();
  
  	DataGrid1.AutoGenerateColumns = false;
  	DataGrid1.DataSource = ds.Tables["estrutura"].DefaultView;
  	DataGrid1.DataBind();
}

note q ta caminhando, mais falta configurar um LinkButton, e é ai q me perco veja essa linha....

tp.ItemTemplate = new ColunaLinkButton();

essa árte ai do *ColunaLinkButton* ta faltando criar esse metodo ou classe certo?

porque eu apenas estava olhando o link q você me passou, e tava assim o codigo...

dai eu tava olhando la o link e enpaquei na parte da classe la, porque to fazendo em c#, e também n entendi nada doq você fez la, você pode me dizer como q faz m c# tudo aquilo, e seila se possivel explicar o codigo... porque ta foda....

tem também um

Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn

e também um

Public Sub ColunaLinkButton_Click(ByVal sender As Object, ByVal e As EventArgs)

nem sei como você chegou ai, você teve q digitar td isso ai, ou você entrou em algum evento do ColunaLinkButton...? tipo o click dele ai.... desculpe encher o saco mais uma vez...falou

Sim, o Visual Studio.NET lista os métodos e propriedades para serem sobrescritos, porém acho que ele só faz isso para o VB.NET (estranhamente a Microsoft não colocou isso para o C#).

De qualquer maneira, tive que reinstalar o computador ontem e ainda não instalei o VS.NET. Assim que eu instalar vou portar aquele código do VB.NET para o C# e colocar aqui. Me lembre, se não eu esqueço! smile.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, demorou (e deu um trabalho e tanto), mas consegui fazer. Declare a seguinte classe dentro da classe da página:

  public class ColunaLinkButton2 : DataGridColumn 
  {
  	private int linha = 0;

  	void ColunaLinkButton_Click(object sender, EventArgs e) 
  	{
    LinkButton botão = (LinkButton)sender;
    TableCell célula = (TableCell)botão.Parent;
    DataGridItem item = (DataGridItem)célula.Parent;
    DataGrid dg = (DataGrid)item.Parent.Parent;
    LinkButton l = (LinkButton)célula.Controls[0];

    string para = String.Format("{0}?{1}={2}", "procura.aspx", l.Attributes["Coluna"], l.Text);
    dg.Page.Response.Write(para);
    // dg.Page.Server.Transfer(para)
  	}

  	public override void InitializeCell(System.Web.UI.WebControls.TableCell cell, int columnIndex, System.Web.UI.WebControls.ListItemType itemType)
  	{

    if (itemType == ListItemType.Header) 
    {
    	// pass
    }
    else 
    {
    	DataGrid dg = (DataGrid)this.Owner;
    	DataTable dt = (DataTable)dg.DataSource;
    	if (linha < dt.Rows.Count) 
    	{
      LinkButton l = new LinkButton();
      l.Text = dt.Rows[linha][columnIndex].ToString();
      l.Attributes.Add("Coluna", dt.Columns[columnIndex].ColumnName);
      cell.Controls.Add(l);
      l.Click += new System.EventHandler(ColunaLinkButton_Click);
      linha++;
    	}
    	else 
    	{
      linha = 0;
    	}
    }
    base.InitializeCell(cell, columnIndex, itemType);
  	}
  }
Depois, coloque o seguinte no evento Load da página:
  	DataTable dt = new DataTable("Tabela");
  	dt.Columns.AddRange(new DataColumn[] {new DataColumn("Código", Type.GetType("System.Int32")), new DataColumn("Nome", Type.GetType("System.String"))});
  	dt.Rows.Add(new object[] {1, "Junior"});
  	dt.Rows.Add(new object[] {2, "Graymalkin"});
  	dt.Rows.Add(new object[] {3, "Ramon"});
  	dt.Rows.Add(new object[] {4, "Teste"});

  	ColunaLinkButton2 col1 = new ColunaLinkButton2();
  	col1.HeaderText = "Código:";
  	ColunaLinkButton2 col2 = new ColunaLinkButton2();
  	col2.HeaderText = "Nome:";

  	DataGrid1.Columns.Add(col1);
  	DataGrid1.Columns.Add(col2);

  	DataGrid1.AutoGenerateColumns = false;
  	DataGrid1.DataSource = dt;
  	DataGrid1.DataBind();

Faça um teste aí e veja o resultado.

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...