【问题标题】:Better way to populate form fields from SQL?从 SQL 填充表单字段的更好方法?
【发布时间】:2011-01-13 16:40:18
【问题描述】:

我正在尝试从 SQL 表中填充网络。

这就是我现在所拥有的,虽然我不确定这是否是最好的做事方式,请给我建议:

Public Class userDetails
    Public address1 As String
    Public address2 As String
    Public city As String
    ...
...
...
End Class

Public Class clsPerson
    'set SQL connection
    Dim objFormat As New clsFormat
    Dim objConn As New clsConn()
    Dim connStr As String = objConn.getConn()
    Dim myConnection As New Data.SqlClient.SqlConnection(connStr)

    Public Function GetPersonDetails() As userDetails
        'connection and all other good stuff here

        Try
            ' Execute the command
            myConnection.Open()
            dr = myCommand.ExecuteReader()

            ' Make sure a record was returned
            If dr.Read() Then
                ' Create and Populate ApplicantDetails
                userDetails.address1 = dr("address1")
                userDetails.address2 = objFormat.CheckNull(dr("address2"))
                userDetails.city = objFormat.CheckNull(dr("city"))
                ....

            Else
                Err.Raise(4938, "clsUser", "Error in GetUserDetails - User Not Found")
            End If

            dr.Close()
        Finally
            myConnection.Close()
        End Try

        Return userDetails
    End Function

然后我在后端使用 GetPersonDetails() 函数来填充表单。

像这样:

Dim userDetails as new userDetails
userdetails = getPersonDetails()

txtAddress.text = userdetails.address1

etc....

但是,User db 中有大约 50 个字段,而且似乎需要大量重新输入...请帮助我找到更好的方法。

谢谢!

【问题讨论】:

    标签: .net asp.net vb.net class webforms


    【解决方案1】:
    1. Reflect 属性名称

    2. 从属性名称推断控件名称,例如“txt”和字段名称

    3. 使用FindControl 查找控件并填充其Text 属性。

    您也可以动态生成字段,尽管您失去了对演示文稿的一些控制。但是,这是我不会使用的解决方案 - 它会使代码变得脆弱且难以调试。

    【讨论】:

      【解决方案2】:

      数据绑定用于帮助在表单和数据库之间移动数据。基本上,您将表单字段映射到数据库字段,并且可以控制它是在一个方向(只读)还是两个方向(读/写)刷新。您可能仍然有一个映射每个字段的语句,但有时它会使事情变得更容易。如果您尝试做的不仅仅是基础知识,那么它会变得更加复杂,但它几乎总是可以调整,因为它非常模块化,允许您修改行为或实现自己的类/接口来构建更复杂场景的解决方案。

      请注意底部有一个“继续阅读”链接: http://www.startvbdotnet.com/ado/simplebinding.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 2018-11-10
        • 1970-01-01
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        相关资源
        最近更新 更多