Дата не отображается в текстовом поле, если TextMode установлен в «Дата»? - PullRequest
1 голос
/ 14 января 2020

У меня есть три текстовых поля: tbEditStartDate, tbEditStopDate и tbEditRenewalDate. У меня есть Gridview под названием gvApp, который содержит список кандидатов с указанием даты начала, даты окончания и даты продления. Я создал команду строки, которую я использую, чтобы получить дату начала, дату окончания и дату обновления и отобразить ее в tbEditStartDate, tbStopDate и tbRenewalDate. Моя проблема в том, что всякий раз, когда я включаю Textmode = "Date" в текстовые поля, даты не будут отображаться. Если я удаляю TextMode = "Date", отображаются даты. Я пытаюсь сохранить TextMode = "Date", потому что DatePicker облегчает пользователям выбор даты визуально. Кроме того, я попытался изменить типы данных трех значений в SQL, но все же не повезло. Вот что у меня есть:

<div class="row view-basic-card" style="margin-bottom:10px">
    <div class="col-12 col-md-6 col-lg-3">
        Start Date:
        <asp:TextBox ID="tbEditStartDate" class="form-control" TextMode="Date" runat="server" Style="margin-right: 15px; width: 185px"></asp:TextBox>
    </div>
    <div class="col-12 col-md-6 col-lg-3">
        Stop Date:
        <asp:TextBox ID="tbEditStopDate" class="form-control" textmode="date" runat="server"  Style="margin-right: 15px; width: 185px"></asp:TextBox>
    </div>
    <div class="col-12 col-md-6 col-lg-3">
        Renewal Date:
        <asp:TextBox ID="tbEditRenewalDate" class="form-control" runat="server"  Style="margin-right: 15px; width: 185px"></asp:TextBox>
    </div>
    <div class="col-12 col-md-6 col-lg-3">
        Contract Type:
        <asp:TextBox ID="tbEditContractType" class="form-control" runat="server" Style="margin-right: 15px; width: 185px"></asp:TextBox>
    </div>
</div>

Тогда вот моя команда строки:

Protected Sub gvApp_RowCommand(sender As Object, e As GridViewCommandEventArgs)

Dim myDateTime As Date = Date.Parse(DateString)
Dim myDate As Date = myDateTime.Date()

'----------------------------------------------------------------------------
Dim strSelectedPersonID As String
Dim strSelectedFirstname As String
Dim strSelectedLastname As String
Dim strSelectedMiddlename As String
Dim strSelectPosition As String
Dim strEditDepartment As String
Dim strEditBirthdate As String = myDate
Dim strEditGender As String
Dim strEditCitizenship As String
Dim strEditSSN As String
Dim strEditPassport As String
Dim strEditVisa As String
Dim strEditPhone As String
Dim strEditEmail As String
Dim strEditAddress As String
Dim strOfferLetterStatus As String
Dim strOfferStatusDate As String
Dim strEditStartDate As String = myDate
Dim strEditStopDate As String = myDate
Dim strEditRenewalDate As String = myDate
Dim strEditContractType As String
Dim strEditAvailDate As String = myDate
Dim strEditArrivalDate As String = myDate

If e.CommandName = "Select" Then
    idx = Convert.ToInt32(e.CommandArgument)

    Dim row As GridViewRow = gvApp.Rows(idx)

    xSelectedPersonID = row.Cells(0).Text

    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("HRRecruitmentDBConn").ToString())

        conn.Open()
        Dim dsApplicant As New DataSet()
        Dim dr As SqlDataReader

        Dim strSelectCmd As String = "SELECT * FROM tblApplicant WHERE AppID = @AppID "
        Dim cmd As New SqlCommand(strSelectCmd, conn)

        cmd.Parameters.AddWithValue("@AppID", xSelectedPersonID)
        cmd.Connection = conn
        dr = cmd.ExecuteReader()
        If dr.HasRows Then

            While (dr.Read())
                strEditStartDate = dr(1).ToString
                strEditStopDate = dr(2).ToString
                strEditRenewalDate = dr(3).ToString
                strEditContractType = dr(4).ToString

                strEditDepartment = dr(7).ToString
                strSelectPosition = dr(6).ToString
                strSelectedFirstname = dr(8).ToString
                strSelectedLastname = dr(9).ToString
                strSelectedMiddlename = dr(10).ToString
                strEditGender = dr(11).ToString
                strEditBirthdate = dr(12).ToString

                strEditEmail = dr(13).ToString
                strEditPhone = dr(14).ToString
                strEditAddress = dr(15).ToString
                strEditSSN = dr(16).ToString
                strEditPassport = dr(17).ToString

                strEditCitizenship = dr(18).ToString
                strEditVisa = dr(19).ToString
                strOfferLetterStatus = dr(20).ToString
                strOfferStatusDate = dr(21).ToString

                strEditAvailDate = dr(23).ToString
                strEditArrivalDate = dr(24).ToString

            End While

        End If

        tbEditStartDate.Text = strEditStartDate
        tbEditStopDate.Text = strEditStopDate
        tbEditRenewalDate.Text = strEditRenewalDate
        tbEditContractType.Text = strEditContractType
        cmbAppEditPosition.Value = strSelectPosition
        cmbEditDepartment.Value = strEditDepartment
        tbEditFirstname.Text = strSelectedFirstname
        tbEditLastname.Text = strSelectedLastname
        tbEditMiddlename.Text = strSelectedMiddlename
        cmbEditGender.Value = strEditGender
        tbEditBirthdate.Text = strEditBirthdate
        tbEditEmail.Text = strEditEmail
        tbEditPhone.Text = strEditPhone
        tbEditAddress.Text = strEditAddress
        tbEditSSN.Text = strEditSSN
        tbEditPassport.Text = strEditPassport
        tbEditCitizenship.Text = strEditCitizenship
        tbEditVisa.Text = strEditVisa
        cmbOfferStatus.Value = strOfferLetterStatus
        tbOfferStatusDate.Text = strOfferStatusDate
        tbEditAvailDate.Text = strEditAvailDate
        tbEditArrivalDate.Text = strEditArrivalDate

        conn.Close()


    End Using



End If

BindGridView()

End Sub

1 Ответ

0 голосов
/ 15 января 2020

Вы слишком долго держите соединение открытым. Не открывайте ваше соединение до тех пор, пока не начнется .Execute. Закройте соединение как можно скорее. Не обновляйте пользовательский интерфейс, пока соединение открыто.

Конец использования закрывает и удаляет как соединение, так и команду.

Вместо всех этих переменных просто присвойте значения из DataTable непосредственно свойствам управления пользовательским интерфейсом.

Для текстовых элементов управления с атрибутом TextMode = "Date" вызовите .ToString ("yyy-MM-dd") для объекта DateTime.

Protected Sub gvApp_RowCommand(sender As Object, e As GridViewCommandEventArgs)
    If e.CommandName = "Select" Then
        Dim row As GridViewRow = gvApp.Rows(CInt(e.CommandArgument))
        Dim xSelectedPersonID = row.Cells(0).Text
        Dim dt As New DataTable
        Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("HRRecruitmentDBConn").ToString),
                cmd As New SqlCommand("SELECT * FROM tblApplicant WHERE AppID = @AppID ", conn)
            cmd.Parameters.Add("@AppID", SqlDbType.VarChar, 50).Value = xSelectedPersonID
            conn.Open()
            dt.Load(cmd.ExecuteReader)
        End Using
        If dt.Rows.Count > 0 Then
            tbEditStartDate.Text = CDate(dt.Rows(0)(1)).ToString("yyyy-MM-dd")
            tbEditStopDate.Text = CDate(dt.Rows(0)(2)).ToString("yyyy-MM-dd")
            tbEditRenewalDate.Text = dt.Rows(0)(3).ToString
            tbEditContractType.Text = dt.Rows(0)(4).ToString

            cmbEditDepartment.Value = dt.Rows(0)(7).ToString
            cmbAppEditPosition.Value = dt.Rows(0)(6).ToString
            tbEditFirstname.Text = dt.Rows(0)(8).ToString
            tbEditLastname.Text = dt.Rows(0)(9).ToString
            tbEditMiddlename.Text = dt.Rows(0)(10).ToString
            cmbEditGender.Value = dt.Rows(0)(11).ToString
            tbEditBirthdate.Text = dt.Rows(0)(12).ToString

            tbEditEmail.Text = dt.Rows(0)(13).ToString
            tbEditPhone.Text = dt.Rows(0)(14).ToString
            tbEditAddress.Text = dt.Rows(0)(15).ToString
            tbEditSSN.Text = dt.Rows(0)(16).ToString
            tbEditPassport.Text = dt.Rows(0)(17).ToString

            tbEditCitizenship.Text = dt.Rows(0)(18).ToString
            tbEditVisa.Text = dt.Rows(0)(19).ToString
            cmbOfferStatus.Value = dt.Rows(0)(20).ToString
            tbOfferStatusDate.Text = dt.Rows(0)(21).ToString

            tbEditAvailDate.Text = dt.Rows(0)(23).ToString
            tbEditArrivalDate.Text = dt.Rows(0)(24).ToString
        End If
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...