Измените значение представления сетки на основе некоторого условия - PullRequest
0 голосов
/ 10 июня 2019

У меня есть элемент управления Grid view с несколькими столбцами, который заполняется из формы, которую заполняет пользователь. В форме некоторые значения не являются обязательными, и если пользователь их не выбирает, они отображаются как «select»в виде сетки.Как мне изменить это значение на что-то относительное, например «нет», когда я загружаю представление Grid.Другими словами, если этот столбец содержит «select», измените его на «None»

Это мой код для заполнения моего Gridview

Private Sub LoadGridAll()

    txtSearchEmployee.Text = ""
    Try
        Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("XXX").ConnectionString)

            Using cmd As New SqlCommand("SELECT EmployeeCodes.Code, EmployeeCodes.FirstName , EmployeeCodes.LastName , EmployeeCodes.EmployeeID , CostCentre , ExaminationType.ExaminationTypeName  , PhysicalExam.PhysicalExamName , ExaminationType.ExaminationTypeName  , PhysicalExam.PhysicalExamName , Audiogram.AudiogramName , AudiogramRec.AudiogramRecName,LungFunction.LungFunctionName,ChestResults,ECGResult,DrugScreeningResult,BloodGlucoseResult,GGTResult,LeftEyeDayNight,RightEyeDayNight,LeftEyeCorrDayNight,RightEyeCorrDayNight,VisualFieldLeftDayNight,VisualFieldRightDayNight,ColourVisionDayNight,DeptPerceptionDayNight,OptometristYesNo,Outcome.Name , OutcomeRecommendations.OutcomeRecommendationsName,OtherProblems,Notes,DateTested,NextDueDate FROM  MedicalResults,EmployeeCodes,ExaminationType,PhysicalExam,Audiogram,AudiogramRec,LungFunction,Outcome,OutcomeRecommendations WHERE MedicalResults.EmployeeID = EmployeeCodes.EmployeeID AND ExaminationType.ExaminationTypeID = MedicalResults.ExaminationTypeID AND PhysicalExam.PhysicalExamID = MedicalResults.PhysicalExamType AND Audiogram.AudiogramID = MedicalResults.AudiogramID AND MedicalResults.AudiogramRecID = AudiogramRec.AudiogramRecID AND LungFunction.LungFunctionID = MedicalResults.LungFunctionID AND OutcomeRecommendations.OutcomeRecommendationsID = MedicalResults.OutcomeRecommendationsID AND Outcome.OutcomeID = MedicalResults.OutcomeID ", conn)

                conn.Open()

                Dim sda As New SqlDataAdapter(cmd)
                Dim dt As New DataTable()
                sda.Fill(dt)

                For Each row As DataRow In dt.Rows
                    Dim strDetail As Object
                    strDetail = row.Item(10)

                    If strDetail = "Select" Then

                        strDetail = "None"

                    End If
                Next row

                GridViewAll.DataSource = dt
                GridViewAll.DataBind()                   


                conn.Close()

            End Using

        End Using

    Catch ex As Exception

    End Try

End Sub

1 Ответ

1 голос
/ 10 июня 2019

Прежде всего, я бы не сохранял «Select» в БД, более логично было бы сохранить нулевое значение (DBNull.Value). Тогда в вашем операторе select вы можете использовать функцию IsNull (yourField, 'None'). Изменить: если у вас есть нулевые значения в сетке, вы также можете использовать свойство DataGridView:

Me.GridViewAll.RowsDefaultCellStyle.NullValue = "None"

Однако, если вы хотите сделать это так, как вы показали, вы очень близки - вам просто нужно сохранить новое значение String в DataTable:

row.Item(10) = "None" 'strDetail 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...