Arquivo

Posts Tagged ‘DataGridBoundColumn.ElementStyle’

WPF: DataGrid – Parte 3

novembro 28, 2011 1 comentário

Nessa terceira parte do artigo vamos aprender a fazer uma coluna com link para um endereço da internet.

Para esse exemplo criei uma nova tela no Visual Studio com um grid e um botão carregar conforme imagem abaixo:

No evento do botão carregar crie o seguinte código:

private void btnCarregar_Click(object sender, RoutedEventArgs e)
        {
            DataSet dsConsulta = new DataSet();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString))
            {
                conn.Open();

                string strComando = "select VendorID, AccountNumber," +
                                    "       Name, " +
                                    "       PurchasingWebServiceURL," +
                                    "       CreditRating," +
                                    "       PreferredVendorStatus," +
                                    "       ActiveFlag" +
                                    "  from Purchasing.Vendor" +
                                    " where PurchasingWebServiceURL is not null";

                SqlCommand cmd = new SqlCommand(strComando, conn);

                SqlDataAdapter sda = new SqlDataAdapter(cmd);

                sda.Fill(dsConsulta, "TABLE");
            }

            this.dgLink.DataContext = dsConsulta.Tables[0];
        }

As colunas de nosso grid devem ser criadas da seguinte forma:

<DataGrid AutoGenerateColumns="True" Height="299" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dgLink" VerticalAlignment="Top" Width="466" ItemsSource="{Binding}">            <DataGrid.Columns>                <DataGridTextColumn Binding="{Binding Path=VendorID}" Header="Vendor ID" />                <DataGridTextColumn Binding="{Binding Path=AccountNumber}" Header="Account Number" />                <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" />                <DataGridHyperlinkColumn Header="Purchasing Web Service URL" Binding="{Binding PurchasingWebServiceURL}">                    <DataGridHyperlinkColumn.ElementStyle>                        <Style>                            <EventSetter Event="Hyperlink.Click" Handler="DG_Hyperlink_Click"/>                        </Style>                    </DataGridHyperlinkColumn.ElementStyle>                </DataGridHyperlinkColumn>            </DataGrid.Columns>        </DataGrid>

Criamos uma coluna do tipo DataGridHyperlinkColumn e definimos para ela um estilo. Dentro desse estilo definimos um evento Click e o evento (DG_Hyperlink_Click).
Agora vamos programar esse evento:

Hyperlink link = e.OriginalSource as Hyperlink;
Process.Start(link.NavigateUri.ToString());

Criamos um objeto Hyperlink que irá receber as informações do link no grid, em seguida chamamos esse endereço.  Se o endereço aponta um site que será aberta com o padrão web browser, se for uma pasta ela será aberta no explorer, se é um arquivo que será aberto com o aplicativo padrão associado a ele.

Execute o código e veja o resultado.

No próximo artigo vamos aprender novas funcionalidades o datagrid.

Até a próxima.

Anúncios