Detalhes no GridView
Ola
Vejam minha necessidade,
Estou trabalhando em um site que disponibiliza serviços na Web.
Por exemplo o Funcionário A tem direito ao Serviço A e Serviço B
Após seu LOgin e senha, direciono este a uma página com uma GridView que realiza a busca dos serviços disponíveis,
Como faço para que em tempo de execução um Hyperlink dentro da Grid. receba uma URL em Específico,
Pensei em Usar um HyperlinkField, Mas gostaria de Entender como faço isto com um pouco mais de detalhes,
por exemplo.
Caso seja o Serviço a o Link recebe "~/ServicoA.aspx?id=" onde Zero seja o Código do funcionario.
Gostaria de Saber também como posso usar isto com uma imagem.
Grato
Fernando Reis
Curtidas 0
Respostas
Fabio Mans
05/05/2009
Olá em primeiro lugar você precisa ter o código do funcionário armazenado, pode ser uma Session, como exemplo eu criei uma string. Em seguida no evento RowDataBound você adiciona a Tag href, é bem simples, eu montei um exemplo preenchendo um grid com alguns dados que recupero de um DataSet, veja se consigo explicar através do exemplo abaixo.
GRID
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField></asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
CÓDIGO
public partial class GridView : System.Web.UI.Page
{
//Aqui vc tem que ter o valor do seu funcionário em algum uma Session, um Cookie e recuperar
private string funcionario;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
funcionario = "a";
PreencheGrid();
}
}
private void PreencheGrid()
{
GridView1.DataSource = GetDataSet();
GridView1.DataBind();
}
private static DataSet GetDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Table");
dt.Columns.Add("Name", Type.GetType("System.String"));
dt.Columns.Add("Address", Type.GetType("System.String"));
dt.Columns.Add("Phone", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["Name"] = "MARIA";
dr["Address"] = "SAO PAULO";
dr["Phone"] = "3274-9513";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "FELIPE";
dr["Address"] = "SALVADOR";
dr["Phone"] = "9308-8592";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(Equals(funcionario,"a"))
{
//Vamos supor que você queira passar o número de cadastro dele - 1520
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1520");
}
else
{
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1690");
}
}
}
Para utilizar uma imagem basta substituir o ACESSAR pelo seguinte.
<a href='Documento.aspx?IdDoc='>ACESSAR<img src='../Imagens/arrow-right_cinza.gif' title='Detalhes' border='0'></a>
Espero ter ajudado.
==========================================================
Ola
Vejam minha necessidade,
Estou trabalhando em um site que disponibiliza serviços na Web.
Por exemplo o Funcionário A tem direito ao Serviço A e Serviço B
Após seu LOgin e senha, direciono este a uma página com uma GridView que realiza a busca dos serviços disponíveis,
Como faço para que em tempo de execução um Hyperlink dentro da Grid. receba uma URL em Específico,
Pensei em Usar um HyperlinkField, Mas gostaria de Entender como faço isto com um pouco mais de detalhes,
por exemplo.
Caso seja o Serviço a o Link recebe "~/ServicoA.aspx?id=" onde Zero seja o Código do funcionario.
Gostaria de Saber também como posso usar isto com uma imagem.
Grato
GRID
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField></asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
CÓDIGO
public partial class GridView : System.Web.UI.Page
{
//Aqui vc tem que ter o valor do seu funcionário em algum uma Session, um Cookie e recuperar
private string funcionario;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
funcionario = "a";
PreencheGrid();
}
}
private void PreencheGrid()
{
GridView1.DataSource = GetDataSet();
GridView1.DataBind();
}
private static DataSet GetDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Table");
dt.Columns.Add("Name", Type.GetType("System.String"));
dt.Columns.Add("Address", Type.GetType("System.String"));
dt.Columns.Add("Phone", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["Name"] = "MARIA";
dr["Address"] = "SAO PAULO";
dr["Phone"] = "3274-9513";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Name"] = "FELIPE";
dr["Address"] = "SALVADOR";
dr["Phone"] = "9308-8592";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(Equals(funcionario,"a"))
{
//Vamos supor que você queira passar o número de cadastro dele - 1520
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1520");
}
else
{
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1690");
}
}
}
Para utilizar uma imagem basta substituir o ACESSAR pelo seguinte.
<a href='Documento.aspx?IdDoc='>ACESSAR<img src='../Imagens/arrow-right_cinza.gif' title='Detalhes' border='0'></a>
Espero ter ajudado.
==========================================================
Ola
Vejam minha necessidade,
Estou trabalhando em um site que disponibiliza serviços na Web.
Por exemplo o Funcionário A tem direito ao Serviço A e Serviço B
Após seu LOgin e senha, direciono este a uma página com uma GridView que realiza a busca dos serviços disponíveis,
Como faço para que em tempo de execução um Hyperlink dentro da Grid. receba uma URL em Específico,
Pensei em Usar um HyperlinkField, Mas gostaria de Entender como faço isto com um pouco mais de detalhes,
por exemplo.
Caso seja o Serviço a o Link recebe "~/ServicoA.aspx?id=" onde Zero seja o Código do funcionario.
Gostaria de Saber também como posso usar isto com uma imagem.
Grato
GOSTEI 0
Fernando Reis
05/05/2009
Ola Fabio,
Obrigado pela dica,
Incrivel como me parece táo logico,
aproveitando o Chamado, queria perguntar
na linha abaixo
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1690");
ao inves de colocar o numero, "1690" eu (claro) posso modificar para o valor da Célula?
por exemplo:
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", e.Row.Cells[0].text);
Obrigado
Obrigado pela dica,
Incrivel como me parece táo logico,
aproveitando o Chamado, queria perguntar
na linha abaixo
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", "1690");
ao inves de colocar o numero, "1690" eu (claro) posso modificar para o valor da Célula?
por exemplo:
//Funcionario B - 1690
e.Row.Cells[0].Text =
string.Format("<a href='Documento.aspx?IdDoc='>ACESSAR</a>", e.Row.Cells[0].text);
Obrigado
GOSTEI 0
Fernando Reis
05/05/2009
Outra pergunta,
se Eu fosse trabalhar com este Exemplo oque eu mudaria no Caso de um IMAGEBUTON?
https://www.devmedia.com.br/articles/viewcomp.asp?comp=9281&hl=
Grato
se Eu fosse trabalhar com este Exemplo oque eu mudaria no Caso de um IMAGEBUTON?
https://www.devmedia.com.br/articles/viewcomp.asp?comp=9281&hl=
Grato
GOSTEI 0
Fabio Mans
05/05/2009
É mais fácil ainda.
<asp:ButtonField ButtonType="Image" CommandName="Direcionar" ImageUrl="~/Images/aprove.gif" FooterText="Approve" >
<ItemStyle HorizontalAlign="Center" />
</asp:ButtonField>
protected void gvwApprove_RowCommand(object sender, GridViewCommandEventArgs e)
{
//Aqui você pode recuper um id no datakey
int ID = Convert.ToInt32(
gvwApprove.DataKeys[Convert.ToInt32(e.CommandArgument)][0]);
if (e.CommandName == "Direcionar")
{
if(usuario a faz alguma coisa)
}
else
{
senao faz outra coisa.
}
}
Sobre sua segunda dúvida eu não entendi.
Fabio
<asp:ButtonField ButtonType="Image" CommandName="Direcionar" ImageUrl="~/Images/aprove.gif" FooterText="Approve" >
<ItemStyle HorizontalAlign="Center" />
</asp:ButtonField>
protected void gvwApprove_RowCommand(object sender, GridViewCommandEventArgs e)
{
//Aqui você pode recuper um id no datakey
int ID = Convert.ToInt32(
gvwApprove.DataKeys[Convert.ToInt32(e.CommandArgument)][0]);
if (e.CommandName == "Direcionar")
{
if(usuario a faz alguma coisa)
}
else
{
senao faz outra coisa.
}
}
Sobre sua segunda dúvida eu não entendi.
Fabio
GOSTEI 0
Fernando Reis
05/05/2009
Ok, Fabio,
Duvida Escalrecida, Obrigado
GOSTEI 0