Asp.NET函数,SqlDataReader IF语句未正确评估

时间:2014-08-20 12:49:23

标签: asp.net vb.net if-statement eval sqldatareader

我有一个名为checkTitle()的函数,它读取一个查询,并且有一个if语句,其条件基于从Command Text返回的结果。问题在于它没有正确评估它正在读取的内容。此功能是页面上搜索文本框的结果。此函数用于控制listview内部超链接的数据绑定文本。

而不是做类似的事情
 <%#Eval("Category")%>

我需要能够在绑定到Category或Type之间进行更改因为在数据库表中,All值在Category中有一个值,但Type中的某些值为NULL。因此,如果Type为NULL,我需要将超链接文本绑定到Category,如果Type I中有值,则需要将其绑定到Type。我将变量Search作为查询字符串传递,当我运行代码行时,我得到了Search的值。当我进入while循环时,当前正在读取数据库中列类型没有NULL值,而实际上应该有大约7个NULL值并且类型中只有3个实际值。我已经使用sql4.CommandText并将其输入到单独的查询中并且工作得很好,为Type返回NULL值。这是守则。

 Public Function checkTitle() As String
    Dim name As String
    Dim Search As String = Request.QueryString("Search")
    Dim Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Sprayer_Parts_CatalogConnectionString").ConnectionString.ToString)
    Dim sql4 As New SqlCommand
    sql4.Connection = Conn
    If Not Search = "" Then
        Conn.Open()
        sql4.Parameters.AddWithValue("@Search", Search)
        sql4.CommandText = "SELECT Category, Type FROM SubCategory  WHERE ( SubCategory.Type LIKE '%' + @Search + '%')"
        Dim reader As SqlDataReader = sql4.ExecuteReader


        While reader.Read()
            Dim tst As String = reader("Category")

            If reader.IsDBNull(1) Then

                name = "Category"
                Return name
            ElseIf Not reader.IsDBNull(1) Then

                name = "Type"
                Return name
            End If
            reader.NextResult()

        End While

        Conn.Close()

    End If
End Function

标记代码是

 <a style="color:Black; font-size:20px; font-weight:bolder;" href="Product_Type.aspx?Item=<%#Eval("Category")%>"><%# Eval(checkTitle.ToString)%></a>

然而,Eval(checkTitle.ToString)似乎正常工作只是找到主要问题是我的reader.Read()没有在If语句中正确评估。

2 个答案:

答案 0 :(得分:0)

我最终取消了尝试更改数据绑定文本的函数,而只是使用了一个IF语句,在SELECT查询中我添加了一个新列,如果type为null,我将值设置为=&#34 ;分类&#34;如果不是我将它设置为&#34;键入&#34;。然后我绑定到我创建的新列。这是我想要做的事情的查询。

  If Search <> "" Then
        Conn.Open()
        sql4.Parameters.AddWithValue("@Search", Search)
        sql4.CommandText = "SELECT DISTINCT Category, Type FROM SubCategory  WHERE (SubCategory.Category LIKE '%' + @Search + '%')"
        Dim reader As SqlDataReader = sql4.ExecuteReader
        While reader.Read()
            If reader.IsDBNull(1) Then
                SqlDataSource4.SelectCommand = "SELECT DISTINCT Photos.Picture, SubCategory.Category, SubCategory.Type, CASE WHEN SubCategory.Type IS NULL THEN SubCategory.Category ELSE SubCategory.Type END AS linkText FROM SubCategory LEFT OUTER JOIN Photos ON SubCategory.Category = Photos.Type WHERE (SubCategory.Category LIKE '%' + @Search + '%')"
            Else
                SqlDataSource4.SelectCommand = "SELECT DISTINCT Photos.Picture, SubCategory.Category, SubCategory.Type, CASE WHEN SubCategory.Type IS NULL THEN SubCategory.Category ELSE SubCategory.Type END AS linkText FROM SubCategory LEFT OUTER JOIN Photos ON SubCategory.Type = Photos.Type WHERE (SubCategory.Type LIKE '%' + @Search + '%')"
            End If
        End While

答案 1 :(得分:-1)

您是否将GetOrdinal调用的结果放入字符串?