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
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.
No menu Data, clique em Add New Data Source.
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.
No escolher seus objetos de banco de dados página do assistente, selecionar o Produtos tabela e todas as suas colunas.
From a Caixa de ferramentas, add a DataGrid controle ao formulário.
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
False
False
A Point estrutura com -2 para x e -2 para y.
A Size estrutura com 184 para a largura e 190 para a altura.
conjunto o DataSource propriedade para o Pedidos tabela.Visual Studio Adiciona o NorthwindDataSet, ProductsBindingSource, e ProductsTableAdapter objetos a seu projeto.
Clique na propriedade TableStyles no painel Properties.Essa ação exibe a caixa de diálogo DataGridTableStyle Collection Editor.Faça o seguinte:
Adicionar um DataGridTableStyle objeto para o TableStyles coleção.
Especifique a Propriedade " Produtos " para a MappingName .
Clique na Propriedade GridColumnStyle.Essa ação exibe a Caixa de diálogo DataGridColumnStyle Collection Editor.
Adicionar um DataGridTextBoxColumn objeto para o GridColumnStyles coleção.
Clique na Propriedade MappingName e selecione Product Name.
Defina os Header Text e Width desejados.
Repita para colunas adicionais.
Feche as caixas de diálogo.
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.
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(); }
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); } }
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
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 " DISCONTINUED " com uma fonte vermelha.
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; } }
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
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.
Adicionar os seguintes controles ao formulário:
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"); } }
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(); }
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