Partilhar via


Como: Usar o DataGrid no Smartphone

Você pode criar um aplicativo do Smartphone semelhante ao programa Contacts do Smartphone.

Observação:

Se você estiver usando uma versão do .NET Compact Framework anteriores à versão 3.5, você deve adicionar uma referência ao sistema.Windows.Forms.DataGrid.dll em seu projeto para usá-lo.

Este exemplo mostra o formulário principal com uma lista de nomes de produtos em um DataGrid controle do banco de dados Northwind, instalado com o Visual Studio. Ele também contém um formulário de exibição de resumo para exibir o registro atual e um formulário de exibição de edição para editar dados e para adicionar novos registros.A BindingSource objeto fornece acesso ao registro selecionado atualmente no banco de dados. Além disso, para controles de vinculação de dados, um BindingSource objeto pode retornar um DataRowView objeto da linha corrente. Você pode usar DataRowView para acessar sistema autônomo dados para uma variedade de propósitos, sistema autônomo determinar o valor corrente de uma coluna.

Como alternativa, você pode ter Visual Studio gerando resumos e editando formulários automaticamente, selecionando Gerar formulários de dados no menu de atalho para a marca SMART em um DataGrid controle. Observe que para fins de demonstração, apenas duas colunas são usadas no exemplo para o resumo e a edição de formulários.

Este aplicativo tem os formulários descritos na tabela a seguir.Também listados estão suas opções de menu para os botões a esquerda e a direita na tela do Smartphone.

Formulário

Recursos

Tecla programável esquerda

Chave direita na tela

formulário principal

(Formulário1)

Exibe uma coluna da tabela no DataGrid controlar no estilo de uma lista de contatos do Smartphone.

Ao pressionar a chave Action, ou Enter no seu teclado com o emulador, o formulário de exibição de resumo é exibido.

Novo

Adiciona um novo registro para o banco de dados e exibe o Formulário EditView.

Editar

Exibe o Formulário EditView.

SummaryView

Exibe valores de coluna do registro corrente, otimizada para exibição.

Feito

Retorna para o formulário principal.

(Nenhum)

EditView

Exibe valores de coluna do registro corrente, otimizado para edição.

Feito

Aceita a caixa, atualiza o banco de dados, e exibe o formulário principal.

Cancel

Cancelar a caixa de diálogo e exibe o formulário principal.

Para criar o projeto e desenhar o formulário principal

  1. In Visual Studio, crie um projeto dispositivo inteligente e defina a plataforma de destino para Windows Mobile 5.0 para Smartphone SDK ou o SDK do Windows Mobile 6 Standard.

  2. No menu Data, clique em Add New Data Source.

  3. No fonte de dados configuração assistente, se conectar a Northwind banco de dados usando o Microsoft SQL servidor Compact edição (.NET estrutura Data provedor for SQL servidor CE).The Northwind de banco de dados, Northwind.sdf, está instalado na pasta \Arquivos de Programas\Microsoft SQL servidor Compact edição\v3.5\Exemplos.

    Observação:

    No Windows Vista, você deve executar Visual Studio sistema autônomo administrador para acessar o banco de dados Northwind. Para obter mais informações sobre como adicionar um banco de dados, consulte Como: Adicionar um banco de dados a um projeto de dispositivo.

  4. No escolher seus objetos de banco de dados página do assistente, selecionar o Produtos tabela e todas as suas colunas.

  5. From a Caixa de ferramentas, add a DataGrid controle ao formulário.

  6. Para que o DataGrid controle aparecer sistema autônomo o Contatos uma lista em um Smartphone, conjunto suas propriedades conforme mostrado na tabela seguinte.

    Propriedade DataGrid

    Definida como

    ColumnHeadersVisible

    False

    RowHeadersVisible

    False

    GridLineColor

    Window

    Location

    A Point estrutura com -2 para x e -2 para y.

    Size

    A Size estrutura com 184 para a largura e 190 para a altura.

  7. conjunto o DataSource propriedade para o Pedidos tabela.Visual Studio Adiciona o NorthwindDataSet, ProductsBindingSource, e ProductsTableAdapter objetos a seu projeto.

  8. Clique na propriedade TableStyles no painel Properties.Essa ação exibe a caixa de diálogo DataGridTableStyle Collection Editor.Faça o seguinte:

    1. Adicionar um DataGridTableStyle objeto para o TableStyles coleção.

    2. Especifique a Propriedade " Produtos " para a MappingName .

    3. Clique na Propriedade GridColumnStyle.Essa ação exibe a Caixa de diálogo DataGridColumnStyle Collection Editor.

    4. Adicionar um DataGridTextBoxColumn objeto para o GridColumnStyles coleção.

    5. Clique na Propriedade MappingName e selecione Product Name.

    6. Defina os Header Text e Width desejados.

    7. Repita para colunas adicionais.

    8. Feche as caixas de diálogo.

  9. Adicione duas formas ao projeto, uma para a exibição Resumo e uma para o modo de exibição de edição.Nomeie-os SummaryView e EditView.

  10. Adicione um parâmetro para o construtores dos formulários SummaryView e EditView para tirar um BindingSource objeto. Declare uma variável, globalCurrentBindingSouce, nesses formulários a ser conjunto para o BindingSource objeto que é passado no construtor. Observe que deve ser conjunto antes do InitializeComponent método é chamado.

    Os desenvolvedores de Visual Basic necessário adicionar um Sub-rotina New para o formulário, adicionando um Novo método a partir do canto superior direito Nome do método lista no painel de código.

    Dim CurrentBindingSource As BindingSource
    Public Sub New(ByVal bsource As BindingSource)
        CurrentBindingSource = bsource
        InitializeComponent()
    End Sub
    
    private BindingSource CurrentBindingSource;
    public SummaryView(BindingSource bsource)
    {
        CurrentBindingSource = bsource;
        InitializeComponent();
    }
    
  11. In the main form, add a MenuItem object named New(MenuItem1), and another named Edit (MenuItem2).Esses menus correspondem aos botões a esquerdas e a direita na tela do Smartphone.Adicione o seguinte código para o novo e edição Click eventos.

    ' Add new record.
    Private Sub MenuItem1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MenuItem1.Click
        ProductsBindingSource.AddNew()
        Dim EditViewDialog As New EditView(ProductsBindingSource)
        If EditViewDialog.ShowDialog() <> DialogResult.OK Then
            ProductsBindingSource.CancelEdit()
        Else
            ProductsBindingSource.EndEdit()
            ProductsTableAdapter.Update(Me.NorthwindDataSet)
        End If
    End Sub
    ' Edit record.
    Private Sub MenuItem2_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MenuItem1.Click
        Dim EditViewDialog As New EditView(ProductsBindingSource)
        If EditViewDialog.ShowDialog() <> DialogResult.OK Then
            ProductsBindingSource.CancelEdit()
        Else
            ProductsBindingSource.EndEdit()
            ProductsTableAdapter.Update(Me.NorthwindDataSet)
        End If
    End Sub
    
    // Add new record.
    private void menuItem1_Click(object sender, EventArgs e)
    {
        productsBindingSource.AllowNew = true;
        productsBindingSource.AddNew();
        EditView EditViewDialog = new EditView(productsBindingSource);
        if (EditViewDialog.ShowDialog() != DialogResult.OK)
        {
            productsBindingSource.CancelEdit();
        }
        else
        {
            ProductsBindingSource.EndEdit();
            this.productsTableAdapter.Update(this.northwindDataSet);
         }
    }
    // Edit record (Edit).
    private void menuItem2_Click(object sender, EventArgs e)
    {
        EditView EditViewDialog = new EditView(productsBindingSource);
        if (EditViewDialog.ShowDialog() != DialogResult.OK)
        {
            productsBindingSource.CancelEdit();
        }
        else
        {
            productsBindingSource.EndEdit();
            this.productsTableAdapter.Update(this.northwindDataSet);
        }
    }
    
  12. No formulário principal, adicione código para o KeyDown evento que ocorre quando a ação chave pressionado no Smartphone. Essa ação exibe o formulário SummaryView.

    Private Sub DataGrid1_KeyDown(ByVal sender As System.Object, _
        ByVal e As System.Windows.Forms.KeyEventArgs) _
        Handles DataGrid1.KeyDown
        If (e.KeyCode = Keys.Enter) Then
            Dim SummaryViewDialog As SummaryView = New SummaryView(ProductsBindingSource)
            Cursor.Current = Cursors.Default
            SummaryView.ShowDialog()
        End If
    End Sub
    
    private void dataGrid1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            SummaryView SummaryViewDialog = 
              new SummaryView(productsBindingSource);
            SummaryViewDialog.ShowDialog();
         }
    }
    

Para criar a exibição de Resumo

  1. Adicionar os seguintes controles ao formulário:

    • A Labelcontrolar para o título nome do produto, sistema autônomo "Product Name:".

    • A Label controle para o valor do nome do produto.

    • A Label controle para o valor Descontínuo, que é exibido somente quando o valor da coluna Descontinuado da tabela Produtos é true. Titule esse rótulo como &quot; DISCONTINUED &quot; com uma fonte vermelha.

  2. Adicione o seguinte código para o construtor para o formulário SummaryView para definir as vinculações de dados.Declare uma variável de formulário chamada CurrentBindingSource para ser conjunto para passado BindingSource instância no construtor do formulário. A DataRowView objeto que determina se a coluna Descontinuado for true, o rótulo Descontinuado é exibido.

    Public Sub New(ByVal bsource As BindingSource)
        CurrentBindingSource = bsource
    
        ' This call is required by the Windows Forms Designer.
        InitializeComponent()
        ' Bind the label that shows the product name.
        ProductNameLabelVal.DataBindings.Add("Text", _
          CurrentBindingSource, "Product Name")
            ' Show the Discontinued label if
            ' that value is true in the database.
            Dim drView As DataRowView
            drView = CurrentBindingSource.Current
            If drView.Item("Discontinued") = True Then
                DiscontinuedLabel.Visible = True
            Else
                DiscontinuedLabel.Visible = False
            End If
        End Sub
    
    private BindingSource CurrentBindingSource;
    public SummaryView(BindingSource bsource)
    {
        CurrentBindingSource = bsource;
        InitializeComponent();
        // Bind the label that shows the product name.
        ProductNameLabelVal.DataBindings.Add("Text",
          CurrentBindingSource, "Product Name");
        // Show the Discontinued label if
        // that value is true in the database.
        DataRowView drView;
        drView = (DataRowView) CurrentBindingSource.Current;
        if (drView["Discontinued"] == true)
        {
            DiscontinuedLabel.Visible = true;
        }
        else
        {
            DiscontinuedLabel.Visible = false;
        }
    }
    
  3. Adicionar um MenuItem objeto chamado concluído para soft esquerdo chave para fechar o formulário e retornar ao formulário principal.

    Private Sub MenuItem1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MenuItem1.Click
        Me.Close
    End Sub
    
    private void MenuItem1_Click(object sender, System.EventArgs e)
    {
        this.Close();
    }
    

Para criar o modo de edição

  1. Adicionar uma referência para o Microsoft.WindowsCE.Forms espaço para nome em seu projeto. Isso é obrigatório para conjunto o Smartphone InputMode a configuração em controles de caixa de texto.

  2. Adicionar os seguintes controles ao formulário:

    • A Label controle de caixa de texto Nome do produto.

    • A TextBox controle para a coluna Nome do produto.

    • A CheckBox controle para o valor Discontinued.

  3. Para conjunto vinculações de dados, adicione o seguinte código ao construtor do formulário após o InitializeComponent Chame. Este código acomoda adição de um novo registro ou edição de um registro existente.Se um novo registro for sendo adicionado, um DataRowView objeto determina se a coluna Descontinuado tem um valor nulo. Se o valor for nulo, a caixa de seleção é definida como false.

    Public Sub New(ByVal bsource As BindingSource)
        CurrentBindingSource = bsource
    
        ' This call is required by the Windows Forms Designer.
        InitializeComponent()
    
        ' Add any initialization after the InitializeComponent() call.
    
        ' Set the Smartphone input mode.
        InputModeEditor.SetInputMode(ProductNameTextBox,_
          InputMode.AlphaT9)
        ProductNameTextBox.DataBindings.Add("Text",_
          CurrentBindingSource, "Product Name")
    
        ' Determine the Discontinued value.
        ' If null, change to False.
        Dim drView As DataRowView
        drView = CurrentBindingSource.Current
        ' Set the bindings.
        If IsDBNull(drView("Discontinued")) Then
            DiscontinuedCheckBox.DataBindings.Add("CheckState",_
              CurrentBindingSource, "Discontinued", True,_
              DataSourceUpdateMode.OnValidation, False, "")
        Else
            DiscontinuedCheckBox.DataBindings.Add("Checked",_
              CurrentBindingSource, "Discontinued")
         End If
    End Sub
    
    public EditView(BindingSource bsource)
    {
        CurrentBindingSource = bsource;
        InitializeComponent();
        // Set the Smartphone input mode.
        InputModeEditor.SetInputMode(ProductNameTextBox,
          InputMode.AlphaT9);
        // Set the bindings.
        ProductNameTextBox.DataBindings.Add("Text",
          CurrentBindingSource,"Product Name");
        // Determine the Discontinued value.
        // If null, change to False.
        DataRowView drView;
        drView = (DataRowView) CurrentBindingSource.Current;
        if(drView("Discontinued")== null)
        {
            DiscontinuedCheckBox.DataBindings.Add("CheckState",
              CurrentBindingSource, "Discontinued",
              true,DataSourceUpdateMode.OnValidation,false,"");
        }
        else
        {
            DiscontinuedCheckBox.DataBindings.Add("Checked",
              CurrentBindingSource, "Discontinued");
        }
    }
    
  1. Add a MenuItem object titled Donefor the left soft key to update the database with the changes and return to the Main Form.

    Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        Me.DialogResult = DialogResult.OK
        Me.Close()
    End Sub
    
    Private void MenuItem1_Click(object sender, System.EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
        this.Close();
    }
    
  1. Add a MenuItem object titled Cancelfor the right soft key to discard the changes and return to the main form.

    Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        Me.DialogResult = DialogResult.Cancel
        Me.Close()
    End Sub
    
    Private void MenuItem2_Click(object sender, System.EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
        this.Close();
    }
    

Compilando o código

Este exemplo requer referências aos seguintes namespaces:

Consulte também

Tarefas

Como: Usar o DataGrid no Pocket PC

Conceitos

Generating a Strongly Typed DataSet

Outros recursos

Acesso de dados e suporte a XML no .NET Compact estrutura