Detalhes no GridView

05/05/2009

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

Fernando Reis

Curtidas 0

Respostas

Fabio Mans

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
GOSTEI 0
Fernando Reis

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
GOSTEI 0
Fernando Reis

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
GOSTEI 0
Fabio Mans

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


GOSTEI 0
Fernando Reis

Fernando Reis

05/05/2009

Ok, Fabio,   Duvida Escalrecida, Obrigado    
GOSTEI 0
POSTAR