首页
学习
活动
专区
圈层
工具
发布

VB
EN

Stack Overflow用户
提问于 2011-05-11 14:28:19
回答 1查看 372关注 0票数 0

我有一个大型的VB/SQL应用程序,我在其中创建了一个问题。我有一个程序表,上面有一个活动标志。可以通过用户屏幕切换此标志。其他屏幕访问相同的表来填充下拉列表。这些值作为ID字段(PK)存储在表中。我遇到的问题是,我正在根据活动标志选择下拉值。如果我选择一个记录,该记录中存储了一个已成为非活动的过程,则将旧对象未设置为实例.错误。

我想要做的是在填充下拉列表时检查记录中的值,并允许通过绕过SQL错误来显示记录,并将下拉值显示为空白,同时不更改记录本身。我希望我说的有道理。代码就在下面--相当普通的东西,但是在做了20年的SysAdmin之后,我又回到了应用程序编程中,我仍然生疏了。

库代码

代码语言:javascript
复制
Public Function GetDropDownList(ByVal strDropDownList As String, _
                                ByRef objSession As System.Web.SessionState.HttpSessionState) As String

    Dim strSQL As String = ""

    Select Case strDropDownList

        Case "SurgicalProcedure_ID"
            strSQL = "SELECT [ID]=0,[Description]='' " _
                   & "UNION " _
                   & "SELECT [ID],[Description] " _
                   & "FROM dbo.viw_List_SurgicalProcedures " _
                   & "WHERE ISNULL(Active,0) = 1 " _
                   & "ORDER BY [Description] ASC"

VB代码-幕后

代码语言:javascript
复制
        With objSqlCommand
            .Connection = mobjSqlConnection
            .CommandText = "SELECT * " _
                         & "FROM dbo.viw_tblCaseProcedure " _
                         & "WHERE [ID] = " & Session("CASE_ID").ToString
            .CommandType = CommandType.Text
        End With

        objSqlDataAdapter = New SqlDataAdapter(objSqlCommand)

        objSqlDataAdapter.Fill(objSqlDataSet)

        objSqlDataRow = objSqlDataSet.Tables(0).Rows(0)

        objDropDownList = Me.SurgicalProcedure_ID
        strStringValue = objSqlDataRow("SurgicalProcedure_ID").ToString()
        If strStringValue = "" Then strStringValue = "0"
        objDropDownList.Items.FindByValue(strStringValue).Selected = True

谢谢你的建议,乔尔

EN

回答 1

Stack Overflow用户

发布于 2011-05-11 16:18:21

我不太清楚你的做法,但据猜测,问题似乎就在这一行上:

代码语言:javascript
复制
objDropDownList.Items.FindByValue(strStringValue).Selected = True

首先应该这样做,以避免对象没有设置错误:

代码语言:javascript
复制
Dim ddlItem as ListItem = objDropDownList.Items.FindByValue(strStringValue)
If ddlItem Is Nothing Then
    ' Insert 'blank item' code here
Else
    ddlItem.Selected = True
EndIf

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5965898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档