当前位置:编程学习 > C#/ASP.NET >>

自定义控件绑定成功后,不能自动更新数据源

我自己定义了一个控件,控件里面有三个子控件:TextBox,ComboBox,DateTimePicker

功能描述:
在不得到焦点的情况下,控件显示为TextBox,
如果获得焦点,结合传递的属性,决定是显示为ComboBox,还是DateTimePicker,同时TextBox隐藏。
,当再次失去焦点的时候,控件把ComboBox或者DateTimePicker选择的值赋给TextBox,显示TextBox,隐藏ComboBox或者DateTimePicker

绑定是成功的,但是更改控件的值不能更新到对应的数据源,不知道是怎么回事。 自定义控件 自动更新 --------------------编程问答-------------------- 控件中写个获取这些值的方法,并且定义为public。
在主画面获取值通过这个方法来获取即可。 --------------------编程问答--------------------
引用 1 楼 renyi123 的回复:
控件中写个获取这些值的方法,并且定义为public。
在主画面获取值通过这个方法来获取即可。



        Public Event ValueChanged(ByVal sender As Object, ByVal e As EventArgs)

        Protected Overridable Sub OnValueChanged(ByVal sender As Object, ByVal e As EventArgs)
            RaiseEvent ValueChanged(sender, e)
        End Sub
        Public Overloads Property [Text]() As String
            Get
                Return Me.TextBox.Text
            End Get
            Set(ByVal value As String)
                TextBox.Text = value
            End Set
        End Property
        Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox.GotFocus
            Try
                If Me.TextBox.ReadOnly = True Then Exit Sub
                Select Case mValueType
                    Case TextValueType.mText
                    Case TextValueType.mCombox

                        Me.ComboBox.Visible = True
                        Me.TextBox.Visible = False
                        If Me.TextBox.Text <> "" Then
                            Me.ComboBox.SelectedValue = Me.TextBox.Text
                        End If
                    Case TextValueType.mDate
                        If IsDate(Me.TextBox.Text) Then
                            DateTimePicker.Value = CDate(Me.TextBox.Text)
                        End If
                        Me.DateTimePicker.Location = Me.TextBox.Location
                        Me.DateTimePicker.Width = Me.TextBox.Width
                        Me.TextBox.Visible = False
                        Me.DateTimePicker.Visible = True
                End Select
            Catch ex As Exception

            End Try
        End Sub



        Private Sub DateTimePicker_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker.ValueChanged
            Try
                Text = Format(Me.DateTimePicker.Value, "yyyy-MM-dd")
                RaiseEvent ValueChanged(sender, e)  '如果不加这句,新增的时候,不正确。另外,修改也不行
            Catch ex As Exception
            End Try
        End Sub

        Private Sub ComboBox_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox.SelectedValueChanged
            Try
                Text = ComboBox.SelectedValue
                RaiseEvent ValueChanged(sender, e) '如果不加这句,新增的时候,不正确。另外,修改也不行
            Catch ex As Exception
            End Try
        End Sub

        Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox.TextChanged
            Try
                Select Case mValueType
                    Case TextValueType.mText
                    Case TextValueType.mCombox
                        Me.ComboBox.Visible = False
                        Me.TextBox.Visible = True
                    Case TextValueType.mDate
                        Me.DateTimePicker.Visible = False
                        Me.TextBox.Visible = True
                End Select
            Catch ex As Exception

            End Try
        End Sub



我的代码是这样写的,不知道问题出在哪里 
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,