Как отфильтровать логическое значение с помощью параметра sqldatasource? - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть следующий DropDownList:

            <asp:DropDownList ID="GenderDropDownList" runat="server">
                <asp:ListItem>Gender</asp:ListItem>
                <asp:ListItem>MAle</asp:ListItem>
                <asp:ListItem>Female</asp:ListItem>
            </asp:DropDownList>

и он связан с таблицей базы данных sqlserver, которая называется Staff, где у него есть поле (Gender) с типом (бит), true означает мужской и false означает женский. я хочу фильтровать, используя параметр @gender, вот код в VB. net:

    StaffSqlDataSource.SelectCommand = " select Id,FullName,case when Gender = 'true'  then 'male' else 'female' end as Gender, JobTitle,PhoneNumber,Notes from Staff  where (REPLACE(FullName,' ','') LIKE '%' + REPLACE(@FullName,' ','') + '%' OR @FullName='Null') and (Gender=@Gender or @Gender='Null') order by id desc"


    StaffSqlDataSource.SelectParameters.Clear()

    'Search By FullName
    If FullNameTextBox.Text.Trim = "" Then
        StaffSqlDataSource.SelectParameters.Add("FullName", "Null")
    Else
        StaffSqlDataSource.SelectParameters.Add("FullName", FullNameTextBox.Text.Trim)
    End If

    'Search By Gender
    If GenderDropDownList.SelectedIndex = 0 Then
        StaffSqlDataSource.SelectParameters.Add("Gender", "Null")
    ElseIf GenderDropDownList.Text.Trim = "male" Then
        StaffSqlDataSource.SelectParameters.Add("Gender", True)
    Else
        StaffSqlDataSource.SelectParameters.Add("Gender", False)
    End If

    StaffGridView.DataSourceID = "StaffSqlDataSource"
    StaffGridView.DataBind()

проблема в том, что он показывает эту ошибку: 'Преобразование не удалось при преобразовании значения nvarchar' Null ' бит типа данных. что я могу сделать ??

...