In this example I will show how to validate the data entered into a datarepeater control. For this example I am added the northwind SQL compact edition database to the project and created a typed dataset for the products table. So from the toolbox drop a datarepeater on the form. Inside the datarepeater drag the ProductName, UnitPrice, and Units in stock fields. Your form should look something like
Now in the drawitem event for the datarepeater we can add a handler to validating event.
Private Sub DataRepeater1_DrawItem(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) Handles DataRepeater1.DrawItem
Dim currItem As DataRowView = DirectCast(ProductsBindingSource.Item(e.DataRepeaterItem.ItemIndex), DataRowView)
Dim txt As TextBox = DirectCast(e.DataRepeaterItem.Controls("Unit_PriceTextBox"), TextBox)
AddHandler txt.Validating, AddressOf TextBox_Validating
End Sub
Dim currItem As DataRowView = DirectCast(ProductsBindingSource.Item(e.DataRepeaterItem.ItemIndex), DataRowView)
Dim txt As TextBox = DirectCast(e.DataRepeaterItem.Controls("Unit_PriceTextBox"), TextBox)
AddHandler txt.Validating, AddressOf TextBox_Validating
End Sub
Private Sub TextBox_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Dim dec As Decimal
If Not Decimal.TryParse(DirectCast(sender, TextBox).Text, dec) Then
MessageBox.Show("Please enter a valid number")
e.Cancel = True
End If
End Sub
Dim dec As Decimal
If Not Decimal.TryParse(DirectCast(sender, TextBox).Text, dec) Then
MessageBox.Show("Please enter a valid number")
e.Cancel = True
End If
End Sub
The complete code
Public Class Form1
Private Sub ProductsBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductsBindingNavigatorSaveItem.Click
Me.Validate()
Me.ProductsBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet)
Me.Validate()
Me.ProductsBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'NorthwindDataSet.Products' table. You can move, or remove it, as needed.
Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
'TODO: This line of code loads data into the 'NorthwindDataSet.Products' table. You can move, or remove it, as needed.
Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
End Sub
Private Sub DataRepeater1_DrawItem(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) Handles DataRepeater1.DrawItem
Dim currItem As DataRowView = DirectCast(ProductsBindingSource.Item(e.DataRepeaterItem.ItemIndex), DataRowView)
Dim txt As TextBox = DirectCast(e.DataRepeaterItem.Controls("Unit_PriceTextBox"), TextBox)
AddHandler txt.Validating, AddressOf TextBox_Validating
End Sub
Dim currItem As DataRowView = DirectCast(ProductsBindingSource.Item(e.DataRepeaterItem.ItemIndex), DataRowView)
Dim txt As TextBox = DirectCast(e.DataRepeaterItem.Controls("Unit_PriceTextBox"), TextBox)
AddHandler txt.Validating, AddressOf TextBox_Validating
End Sub
Private Sub TextBox_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Dim dec As Decimal
If Not Decimal.TryParse(DirectCast(sender, TextBox).Text, dec) Then
MessageBox.Show("Please enter a valid number")
e.Cancel = True
End If
End Sub
End Class
Dim dec As Decimal
If Not Decimal.TryParse(DirectCast(sender, TextBox).Text, dec) Then
MessageBox.Show("Please enter a valid number")
e.Cancel = True
End If
End Sub
End Class
No comments:
Post a Comment