Как динамически заполнить RadioButtonList из базы данных SQL Server

У нас есть RadioButonList с выбором «Да» или «Нет», однако мы хотели бы, чтобы варианты заполнялись динамически из базы данных.

Имя столбца в базе данных, значениями которого мы хотели бы заполнить RadioButtonList, называется IsVetoVote и имеет тип данных Bit с 1 для значения «Да» или 0 для значения «Нет».

Если, например, пользователь запрашивает в базе данных конкретное предложение, чтобы узнать, было ли за это предложение проголосовано, если ответ да (или 1), мы хотели бы, чтобы поле RadioButtonList Yes было отмечено. Если нет (или 0), то флажок RadioButtonList No должен быть установлен.

Мой код не дает значения «Да» или «Нет».

Когда я запускаю часть кода запроса в SSMS, я получаю правильный результат либо 1, либо 0, но RadioButtonList не проверяется.

Это мой текущий код:

<asp:RadioButtonList ID  = "VetoVote" RepeatDirection = "Horizontal" runat = "server">
    <asp:ListItem Value = "Yes"></asp:ListItem>
    <asp:ListItem Value = "No"></asp:ListItem>
</asp:RadioButtonList>    
   
   
Sub LoadData()
        Dim strSQL As String = "Select IsVetoVote from Ballots where choices Like '%' + @vetono + '%'"
        Dim cmdSQL As New SqlCommand(strSQL)
        With cmdSQL.Parameters
            .Add(New SqlParameter("@vetono", SqlDbType.NVarChar).Value = address.Replace("'", "''").Trim())
            End With

        Dim rstData As DataTable = MyrstP(cmdSQL)

        With rstData.Rows(0)
            ' now set the radio button, we have a true/false column "Active"
            ' in the table. So, if true - set Radbio bt1 index 0 (first choice)
            ' if false, then set RB index 1 = (2nd choice).

         VetoVote.SelectedIndex = Not (.Item("IsVetoVote"))    ' sql returns 1 for true, 0 for false

      End With
     End Sub
     
     Public Function MyrstP(cmdSQL As SqlCommand) As DataTable

        Dim rstData As New DataTable

        Using mycon As New SqlConnection(conString)
            Using (cmdSQL)
                cmdSQL.Connection = mycon
                mycon.Open()
                rstData.Load(cmdSQL.ExecuteReader)
            End Using
        End Using
        Return rstData
    End Function      

// Установите флажок, чтобы проверить, совпадает ли платежный адрес пользователя с почтовым адресом.

<td style = "width:5%;" class = "align-left"><span style = "color:darkred;font-weight:600;font-size:14pt;" class = "rMyChoice"> Check box if billing address is same as mailing address <img src = "Images/hand-arrow.jpg" class = "rMyChoice" style = "vertical-align:middle !important;" alt = "Check the checkbox" /><asp:CheckBox style = "height:45px;width:45px;" ID = "SameAsMailing" class = "rMyChoice" runat = "server" /></span></td>

Что-то здесь кажется немного неправильным с логикой, что заставляет меня думать, что небольшая отладка может быть в порядке. Мне кажется, вы устанавливаете все значения параметров радио на первый и единственный первый результат из вашей базы данных.

Hursey 22.02.2023 01:10
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
1
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, вам не нужно никакой петли здесь.

Скажем, у меня есть запись об отеле, и вместо флажка я решаю использовать список RB.

Поэтому, если hotel active = true, то первым выбором будет RB.

Поэтому, если hotel active = false, то установите RB вторым выбором.

Итак, скажем, эта разметка:

    <h2>Hotel information</h2>
    <div style = "float: left" class = "iForm">
        <label>HotelName</label>
        <asp:TextBox ID = "txtHotel" runat = "server" Width = "280" />
        <br />
        <label>First Name</label>
        <asp:TextBox ID = "tFN" runat = "server" f = "FirstName" Width = "140" />
        <br />
        <label>Last Name</label>
        <asp:TextBox ID = "tLN" runat = "server" f = "LastName" Width = "140" />
        <br />
        <label>City</label>
        <asp:TextBox ID = "tCity" runat = "server" f = "City" Width = "140" /><br />
        <label>Prov</label>
        <asp:TextBox ID = "tProvince" runat = "server" f = "Province" Width = "75"></asp:TextBox>
        <br />
    </div>
    <div style = "float: left; margin-left: 20px" class = "iForm">
        <label>Description</label>
        <br />
        <asp:TextBox ID = "txtNotes" runat = "server" Width = "400" TextMode = "MultiLine"
            Height = "150px" f = "Description"></asp:TextBox>
        <br />
    </div>
    <div style = "clear:both"></div>

    <asp:RadioButtonList ID = "VetoVote" RepeatDirection = "Horizontal"
        runat = "server" CssClass = "rMyChoice" >
        <asp:ListItem Text = "Hotel Active" Value = "Yes"></asp:ListItem>
        <asp:ListItem Text = "Hotel Closed for Season" Value = "No"></asp:ListItem>
    </asp:RadioButtonList>
</div>

И код для загрузки:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        LoadData
    End If

End Sub

Sub LoadData()

    Dim strSQL As String =
        "SELECT * FROM tblHotelsA WHERE id = 16"
    Dim cmdSQL As New SqlCommand(strSQL)

    Dim rstData As DataTable = MyrstP(cmdSQL)

    With rstData.Rows(0)
        txtHotel.Text = .Item("HotelName")
        tFN.Text = .Item("FirstName")
        tLN.Text = .Item("LastName")
        tCity.Text = .Item("City")
        tProvince.Text = .Item("Province")
        txtNotes.Text = .Item("Description")

        ' now set the radio button, we have a true/false column "Active"
        ' in the table. So, if true - set Radbio bt1 index 0 (first choice)
        ' if false, then set RB index 1 = (2nd choice).

        VetoVote.SelectedIndex = Not (.Item("Active"))    ' sql returns 1 for true, 0 for false

    End With

End Sub

И результат таков:

Итак, вы не пытаетесь «заполнить» кнопку RB, вы хотите установить первый вариант или второй вариант на основе одного столбца true/false.

Отмечу сказанное выше, так как RB List можно «кормить» источником данных.

Я мог бы захотеть, чтобы пользователь выбрал ОДИН отель из списка, и поэтому я мог бы иметь «значение» списка RB = идентификатор базы данных PK отеля, а затем текстовую часть в качестве имени отеля.

Итак, я мог бы сказать, загляните на страницу этого списка RB

        <h3>Please pick ONE hotel</h3>
        <asp:RadioButtonList ID = "RBHotels" runat = "server"
            DataValueField = "ID"
            DataTextField = "HotelName"
            CssClass = "rMyChoice">
        </asp:RadioButtonList>

Затем этот код:

Sub LoadRB()

    Dim strSQL As String =
        "SELECT ID, HotelName FROM tblHotelsA ORDER BY HotelName"

    Dim cmdSQL As New SqlCommand(strSQL)

    RBHotels.DataSource = MyrstP(cmdSQL)
    RBHotels.DataBind()

End Sub

И теперь у нас есть список, в котором можно выбрать ТОЛЬКО один отель:

Например это:

Итак, мы здесь немного запутались в том, что вы предлагаете заполнить список RB данными.

Нет, вы просто хотите установить первый выбор или второй выбор на основе ОДНОГО истинного/ложного значения из одной записи в базе данных.

Таким образом, вы можете установить выбранный индекс = 0 (первый выбор) или установить выбранный индекс = 1 (второй выбор) в вашем случае.

К вашему сведению, я ОЧЕНЬ устал вводить код снова и снова, чтобы получить некоторые данные, поэтому в приведенных выше примерах использовалась эта вспомогательная процедура:

Public Function MyrstP(cmdSQL As SqlCommand) As DataTable

    Dim rstData As New DataTable

    Using mycon As New SqlConnection(GetConstr)
        Using (cmdSQL)
            cmdSQL.Connection = mycon
            mycon.Open()
            rstData.Load(cmdSQL.ExecuteReader)
        End Using
    End Using
    Return rstData
End Function

Редактировать: пример тестирования RB

Итак, давайте создадим 100% новую страницу только с такой разметкой:

        <asp:Button ID = "Button1" runat = "server" Text = "Set RB Index = 0"
            OnClick = "Button1_Click"
            />
        <br />
        <asp:Button ID = "Button2" runat = "server" Text = "sET RB index = 1" 
            onclick = "Button2_Click"
            />
        <br />
        <asp:TextBox ID = "TextBox1" runat = "server"></asp:TextBox>
        <br />
        <asp:RadioButtonList ID = "VetoVote" RepeatDirection = "Horizontal" runat = "server">
            <asp:ListItem Value = "Yes"></asp:ListItem>
            <asp:ListItem Value = "No"></asp:ListItem>
        </asp:RadioButtonList>

И код позади будет следующим:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Protected Sub Button1_Click(sender As Object, e As EventArgs)

    TextBox1.Text = "RB set to 0 index value"

    VetoVote.SelectedIndex = 0

End Sub

Protected Sub Button2_Click(sender As Object, e As EventArgs)

    TextBox1.Text = "RB set to 1 index value"

    VetoVote.SelectedIndex = 1

End Sub

И мы сейчас видим это:

Редактировать № 2: Мой css для списка RB

Если у вас есть это:

<asp:RadioButtonList ID  = "VetoVote" RepeatDirection = "Horizontal" runat = "server">
    <asp:ListItem Value = "Yes"></asp:ListItem>
    <asp:ListItem Value = "No"></asp:ListItem>
</asp:RadioButtonList>  

То мы видим/получаем это:

Однако, если мы добавим это на эту страницу:

Редактировать: обновлена ​​таблица стилей - флажок удален

<style>
    .rMyChoice h1 {
        color: hsla(215, 5%, 10%, 1);
        margin-bottom: 2rem;
    }

    .rMyChoice section {
        display: flex;
        flex-flow: row wrap;
    }

    section > div {
        flex: 1;
        padding: 0.5rem;
    }

    .rMyChoice input[type=radio] {
        display: none;
        cursor: pointer;
    }

    .rMyChoice label {
        display: block;
        background: white;
        border: 2px solid hsla(150, 5%, 75%, 1);
        border-radius: 25px;
        padding-left: 8px;
        padding-right: 8px;
        text-align: center;
        box-shadow: 0px 3px 20px -2px hsla(150, 5%, 65%, 0.5);
        position: relative;
        margin-right: 9px;
        height: 30px;
        padding-top: 8px;
    }

    .rMyChoice input[type = "radio"]:checked + label {
        background: hsla(150, 5%, 75%, 1);
        color: hsla(215, 0%, 100%, 1);
        box-shadow: 0px 0px 20px hsla(150,5%, 75%, 0.75);
    }

    .rMyChoice input[type = "radio"] {
        background: red;
        border-color: red;
    }

    .rMyChoice p {
        font-weight: 900;
    }
</style>

Тогда это:

<asp:RadioButtonList ID = "VetoVote" RepeatDirection = "Horizontal" runat = "server"
    CssClass = "rMyChoice"
    >
    <asp:ListItem Value = "Yes"></asp:ListItem>
    <asp:ListItem Value = "No"></asp:ListItem>
</asp:RadioButtonList>

То мы получаем/видим это:

Прежде всего, спасибо вам обоим за быстрый ответ. Альберт, это красивый код. Спасибо. Небольшое уточнение, если можно, сэр, с кодом "Пожалуйста, выберите один отель". Означает ли это, что список радиокнопок html нужно будет убрать из вариантов?

Tairoc 22.02.2023 01:56

Как показывает GIF-анимация экрана, все начинается без выбора. Итак, поскольку мы подаем в список RB ПОЛНУЮ таблицу данных с вариантами выбора, то он начинается без выбора. Когда вы ДЕЙСТВИТЕЛЬНО выбираете гостиницу, обратите внимание, что значение = «id» PK базы данных этой строки таблицы. Таким образом, мы могли бы, конечно, сразу после того, как мы «загрузили» список вариантов отелей, ТОГДА установить один существующий выбор, который есть у пользователя, скажем, из таблицы. так что это будет работать на 100% точно так же, как поле со списком (выпадающий список). Список вариантов представляет собой таблицу вариантов, и выбор одного элемента RB приведет к сохранению одного идентификатора строки PK.

Albert D. Kallal 22.02.2023 02:02

Итак, если бы это был простой вопрос пользователю, какой отель ему нравится? да, чтобы повторно отредактировать данные, затем сразу после того, как я загрузил список отелей RB, следующая строка кода должна / будет устанавливать выбранный отель на основе, скажем, одной пользовательской записи некоторой информации, в том числе о том, какой отель они хочу повидать. Таким образом, в этом случае (например, поле со списком / раскрывающийся список) у нас есть список вариантов, но это приводит к «одному» идентификатору PK отеля, который мы будем сохранять в одной строке в базе данных. И да конечно грузить+редактировать+отображать, тогда надо было бы ставить выбор из того отображаемого списка отелей.

Albert D. Kallal 22.02.2023 02:04

И на 100% ответить на ваш вопрос? Нет, этот список отелей позволяет пользователю выбрать только ОДНО значение из списка (вроде всей идеи списка переключателей - разрешен только один выбор). Так что ничего снимать здесь не нужно. Допускается только один выбор, и при этом будет «выделен» один вариант (как работает любой список переключателей). Конечно, этот пример немного хромает, так как мы редактировали запись об отеле. На практике это будет некоторая запись «людей», и мы показываем список отелей, которые они выбрали для своей поездки, и поэтому они могут выбрать только один отель.

Albert D. Kallal 22.02.2023 02:07

Хорошо, сэр, пожалуйста, дайте мне секунду, чтобы собрать все воедино и опубликовать все обратно, чтобы показать вам. Я изо всех сил стараюсь следить за всем этим. Твой мозг слишком развит. Спецификация заключается в том, что, когда пользователь выполняет поиск в базе данных с одним предикатом WHERE, если для ответа «да» выбрано значение «1», автоматически выбирается поле «Да». То же самое для 0 для Нет.

Tairoc 22.02.2023 02:11

Понятно, но я предполагаю, что мы отображаем здесь ОДИН результат записи, и мы используем этот список RB ОЧЕНЬ как флажок. У него есть только два варианта (вкл/выкл или правда/ложь). Таким образом, этот RB на самом деле НЕ является списком вариантов, а ТОЛЬКО двумя вариантами, отражающими значение ОДНОЙ записи, которую вы здесь отображаете. и это значение true/false исходит из этой записи.

Albert D. Kallal 22.02.2023 02:13

Ты прав. Для конкретной записи проверяется либо Да, либо Нет. Одна из многих моих путаниц заключается в том, что у нас есть LoadData() и LoadRB(). Мне нужны оба? И как мне объединить это: ~<h3>Пожалуйста, выберите ОДИН отель</h3> <asp:RadioButtonList ID = "RBHotels" runat = "server" DataValueField = "ID" DataTextField = "HotelName" CssClass = "rMyChoice"> < /asp:RadioButtonList>~ с исходным HTML RadioButtonList? Я надеюсь добраться туда, где вы находитесь в один прекрасный день.

Tairoc 22.02.2023 02:15

Нет, загрузочный RB должен был продемонстрировать, что список RB НЕ ограничивается только списком вариантов, но может функционировать как поле со списком (раскрывающийся список). Таким образом, список RB может быть фиксированным набором вариантов, которые вы вводите (как у вас, и это на 100% нормально). Но часто люди забывают, что список RB также может содержать целую кучу вариантов — вариантов, которые вам не нужно вводить вручную. Итак, нет, вам не нужно и не нужно заботиться о втором примере - это было просто для справки, чтобы показать, что список RB не ограничивается фиксированными вариантами ручного кода.

Albert D. Kallal 22.02.2023 02:22

Хорошо понял. Спасибо, а как насчет этого? ~ <h3>Выберите ОДИН отель</h3> <asp:RadioButtonList ID = "RBHotels" runat = "server" DataValueField = "ID" DataTextField = "HotelName" CssClass = "rMyChoice"> </asp:RadioButtonList>~ Если Я должен использовать его, куда он идет? Спасибо за ваше терпение.

Tairoc 22.02.2023 02:39

Пример имеет смысл ТОЛЬКО в том случае, если мы хотим «попросить» пользователя выбрать, скажем, один из 10 отелей для планирования поездки. Если бы у нас было 50 отелей, то список RB был бы плохим выбором пользовательского интерфейса, верно? Таким образом, список RB хорош только для нескольких вариантов (например, ваших 2 вариантов) или этого примера примерно из 10 вариантов. Все, что больше, займет слишком много места на странице. Итак, для 20-50 вариантов выбора поле со списком (выпадающий список) было бы гораздо более подходящим. И более 50 вариантов, даже поле со списком не имеет особого смысла. Так где/когда это использовать? Только если надо! и вам, похоже, не нужен этот второй пример.

Albert D. Kallal 22.02.2023 02:47

Пожалуйста, побудь со мной еще немного. Я обновил свой код вверху. Я запустил его без ошибок, но никакие флажки не проверяются. Я попытался отладить его, но получил ответ.SelectedInded = -1 Я знаю, что что-то упускаю.

Tairoc 22.02.2023 03:05

Вы не ломаете это вообще здесь. Я имею в виду, что пользователь собирается выбрать ОДНУ запись для редактирования. Если вы не говорите мне, что хотите отобразить «много» записей в форме. Этот оператор выбора, который вы добавили, не имеет большого смысла, поскольку какая веб-страница должна отображаться? Я предполагаю, что каким-то образом, в каком-то месте пользователь выбирает ОДНУ запись для отображения и редактирования. Теперь, возможно, ваша цель — отобразить сетку из «много» записей, но вы не объяснили эту цель здесь. Немногое из этого имеет смысл, если мы не увидим несколько снимков экрана или какую ОДНУ запись вы пытаетесь отредактировать или отобразить здесь.

Albert D. Kallal 22.02.2023 03:20

Хорошо, извините, если я не объяснил это хорошо. Я думаю, что путаница в том, что я выбираю только ОДНО имя поля. На самом деле в форме отображается около 18 имен полей, основанных на таком количестве объединений и предикате WHERE, который вы там видите. Этот столбец, IsVetoVote, единственный, с которым у меня проблемы, и я не думаю, что имеет смысл публиковать так много строк кода, когда у меня проблемы только с этим. На самом деле, есть расширение этого, которое я не публиковал, которое отключает управление текстовым полем, если голосование вето НЕТ, но это работает. Только ставит галочку, если да, или если нет

Tairoc 22.02.2023 04:39

Не проблема, как уже отмечалось, мы ВСЕ ЕЩЕ говорим об ОДНОЙ записи. Многие поля не имеют значения. На самом деле, как я уже говорил, мы могли бы использовать флажок (вкл. или выкл., истина или ложь). Однако мы просто решили использовать радиокнопку. Но это по-прежнему выбор «истина/ложь» — просто мы показываем его пользователю по-другому. Так что нет, не заботьтесь обо всех этих других столбцах. Я полагаю, у вас есть какие-то «средства» для загрузки всех других элементов управления, и наш код для настройки RB также соответствует тому, что мы опубликовали. При сохранении вы получаете выбранный индекс RB и переключаетесь с 0 на 1, так как мы изменили настройки RB.

Albert D. Kallal 22.02.2023 06:27

Итак, у вас должен быть какой-то код, который извлекает ОДНУ запись, и в этой записи есть столбец true/false. Итак, ваш код для настройки всех текстовых полей и т. д. означает, что в этом коде мы также настраиваем выбор RB. Нам не нужен и не нужен какой-то отдельный запрос ТОЛЬКО для списка RB, поскольку, как вы заметили, мы вытащили строку данных, начали заполнять все элементы управления, включая нашу единственную кнопку RB, которая может быть включена или выключена. Если текст кнопки RB не должен меняться для каждой записи - тогда это большая часть отсутствующей детали. Но да, мы могли бы взять, скажем, 5-6 логических столбцов и сделать 5-6 опций RB.

Albert D. Kallal 22.02.2023 06:34

Спасибо, сэр, за вашу постоянную помощь. Да, все правильно вы сказали. Одна часть, которая, как мне кажется, отсутствует, заключается в том, что после того, как мы загрузим все значения для 18 полей, включая столбец RB с именем IsVetoVote в БД, в RB должен быть установлен флажок для Да или Нет. Другими словами, если мы загрузим запись для Джона Доу, и он проголосовал за Да, необходимо установить флажок Да РБ. Если он проголосовал «Нет», нужно поставить галочку «Нет», и это то, что я изо всех сил пытаюсь заставить работать. Если бы вы могли помочь заставить это работать, это было бы очень признательно. Еще раз большое спасибо за вашу помощь.

Tairoc 22.02.2023 07:00

Хорошо, этот пример кода был VetoVote.SelectedIndex = Not (.Item("Active")). Таким образом, вы можете не только получить/схватить выбранный индекс RB, вы также можете установить значение. Итак, да, когда вы загружаете данные и начинаете заполнять все элементы управления, вы можете использовать это выражение, и вместо значения установки или текста мы устанавливаем индекс равным 0 или 1 (0 = первый выбор). Таким образом, вы должны использовать VetoVote.SelectedIndex = Not (.Item("IsVetoVote")) как у вас. Единственная причина, по которой это может не работать, заключается в том, что вы разрешаете нули для столбца true/false. Но да, этот код выглядит правильно и должен работать.

Albert D. Kallal 22.02.2023 07:11

Что ж, записи, которые я тестировал до сих пор, имеют значения 0 или 1. Итак, не уверен, что еще нужно изменить в коде, чтобы он работал.

Tairoc 22.02.2023 15:55

Ну, мы упускаем некоторые проблемы здесь. Работают ли другие столбцы из этой ОДНОЙ строки данных, и элементы управления правильно получают свои значения из значений других столбцов? Я бы сделал тестовую страницу и попробовал свой код редактирования (см. мое редактирование и новую часть выше). Мы поместили этот RB на страницу с двумя кнопками и текстовым полем. Этот код работает для вас? Я бы в качестве теста поместил текстовое поле на страницу и установил текст в значение вместе с настройкой RB - правильно ли текстовое поле показывает значение 0 или 1?

Albert D. Kallal 22.02.2023 17:16

Да, сэр, как только вы введете значение в поле поиска и нажмете «Поиск», вся форма будет правильно заполнена данными. Здесь ожидается, что значение RB будет проверено либо на Да, либо на Нет. Оно не проверяется. Я протестировал его изолированно и протестировал его с остальными полями формы, которые заполняются из того же запроса и без сигар. О, я не заметил изменения. Позвольте мне попробовать это сейчас.

Tairoc 22.02.2023 17:32

Поместите тестовое текстовое поле ПРАВО под RB на сломанной веб-странице. Посмотрите, отображается ли в текстовом поле значение вместе с RB, который не работает. Итак, присвойте текстовому полю значение, например: MyTestTextBox.Text = .item("IsVetoVote") и посмотрите, что показывает текстовое поле. Я подозреваю, что столбец - это не битовый столбец сервера sql, а какой-то другой тип типа столбца (например, текст)

Albert D. Kallal 22.02.2023 17:35

Нет, столбец имеет битовый тип данных. Я убедился в этом, когда начал с исходного кода, который я разместил здесь.

Tairoc 22.02.2023 17:37

Затем, как уже отмечалось, поместите текстовое поле прямо под RB и установите это текстовое значение в столбец в соответствии с предложением и посмотрите, видит ли/получает/отображает ли это текстовое поле правильное значение.

Albert D. Kallal 22.02.2023 17:39

Хорошо, я думаю, что начинаю видеть, где разрыв. Вы предполагаете, что какое-то действие, например нажатие кнопки, должно произойти в другом, чтобы поле RB «Да» или «Нет» было проверено. Однако, согласно нашим спецификациям, это должно происходить автоматически. Другими словами, когда вы запрашиваете базу данных для заполнения полей формы, включая RB, мы ожидаем, что поле RB будет автоматически проверено на «Да», если значение столбца базы данных равно 1, или проверено на «Нет», если значение столбца равно «Нет». Что я получаю разве это невозможно? Я попробовал ваше предложение, но оно должно работать без нажатия кнопки.

Tairoc 22.02.2023 17:52

Нет. Я только что сказал, поместите простое текстовое поле jane ПРАВО под RB и присвойте ему значение, скажем, так: MyTestTextBox.Text = .item("IsVetoVote"). Это текстовое поле показывает значение? Это тестовое текстовое поле должно быть размещено прямо под существующим RB на странице, а дополнительная строка кода должна быть размещена прямо под строкой, которая назначает RB. Опять же: в этом текстовом поле отображается значение 0 или 1?

Albert D. Kallal 22.02.2023 17:57

Ага, понятно. пожалуйста, подождите, сэр, одну секунду, пока я попробую это сделать.

Tairoc 22.02.2023 18:05

Простите меня, если это глупый вопрос, где .item("isVetoVote") получит свое значение 0 или 1, так как я опускаю текстовое поле в методе button_click, который вы создали без подключения к БД?

Tairoc 22.02.2023 18:11

Хм? У вас есть какой-то код, который заключается в заполнении РБ в ВАШЕМ коде (не пример моего кода). У вас (мы предполагаем) есть некоторый код, который устанавливает значение RB. Где этот код? Как я уже сказал, в коде прямо перед тем, как вы сделали/выполнили это назначение для RB, добавьте дополнительную строку кода, чтобы установить тестовое текстовое поле, которое мы используем. Я не предлагаю использовать этот второй новый код примера «редактирования», мы говорим о вашем существующем коде и странице, которая присваивает значение RB (не тот пример, который я опубликовал). В вашем коде, где вы назначаете RB, вы размещаете этот дополнительный тестовый код.

Albert D. Kallal 22.02.2023 18:19

О, хорошо, извините, я неправильно прочитал это.

Tairoc 22.02.2023 18:30

Итак, когда я пытаюсь это сделать, в поле RB не устанавливается флажок «Да» или «Нет». Однако, когда я отлаживал код, он показывает правильные значения, присвоенные столбцу DB. Например, когда я тестировал запись со значением столбца 1, он точно показывает ее в отладчике точно так же, как и со значением 0. Он просто не устанавливает автоматически флажок RB.

Tairoc 22.02.2023 18:49

Мы все еще не достигли цели и набора навыков, чтобы присвоить значение текстовому полю. Пока мы не получим эти знания, мы не сможем писать код, не так ли? Давайте попробуем еще раз: на вашей веб-странице есть куча кода, который назначает элементы управления на этой странице. И у вас есть код, который назначает кнопку RB на этой странице. мы должны добавить текстовое поле и присвоить этому текстовому полю значение из базы данных точно так же, как мы делаем это для RB. Итак, еще раз: сразу после (или прямо перед) кода, который присваивает значение RB, поместите одну строку кода, чтобы присвоить значение нашему тестовому текстовому полю.

Albert D. Kallal 22.02.2023 18:55

Таким образом, текстовое поле возвращает правильные значения. Я не знаю, имеет ли значение, что он возвращает False и True, а не 0 и 1. Другими словами, некоторые значения в столбце isVetoVote возвращают некоторые значения как False и True, а некоторые возвращаются как 0 и 1. Это должно неважно, должно ли? Суть в том, что да, это присваивает некоторые значения текстовому полю

Tairoc 22.02.2023 19:16

Итак, он возвращает не 0 или 1, а возвращает true или false. Итак, это отличный урок по отладке кода! Вот почему было предложено разместить текстовое поле на форме. это означает, что мы должны заменить Not (.Item("IsVetoVote")) на оператор if/then. поэтому используйте это ---- if .Item("IsVetoVote") = True then RB.SelectedIndex = 0 ELSE RB.SelectedIndex =1 end if. Таким образом, мы не можем предположить, что он возвращает 0 или 1, но на самом деле возвращает true/false. Итак, введите if / then, чтобы установить RB. И тогда мы можем удалить наше тестовое текстовое поле.

Albert D. Kallal 22.02.2023 19:25

Честно говоря, это моя вина, поскольку я предполагал, что мы можем напрямую присвоить значение «selectedIndex» RB. Мы не можем, так как он возвращает значение true/false в VB, в то время как в SQL-сервере это «битовый» столбец, который считается ОЧЕНЬ маленьким целочисленным значением! Но нам требуется количество кода if/then, и мы не можем назначить столбец непосредственно RB selectedIndex, который хочет целочисленное значение, начинающееся с 0 (для первого выбора) и так далее.

Albert D. Kallal 22.02.2023 19:32

Это работает!!!!!! ВАУ, это лучшая помощь, которую я когда-либо получал, КОГДА-ЛИБО, и я получил много помощи в деле развития карьеры. Это лучшая помощь, потому что вы просто не написали код и не сказали «здесь». Вы провели меня через все и заставили меня попробовать что-то САМОСТОЯТЕЛЬНО, как бы это ни было. СПАСИБО, Альберт, большое спасибо. Я хочу, чтобы у SS был специальный бонус за ваше невероятное терпение. Большое спасибо. Пожалуйста, не теряйте эту терпеливую и обучающую часть себя. Используйте его для других, как я уверен, вы делали. Я действительно доволен и впечатлен.

Tairoc 22.02.2023 19:38

Не волнуйся. мы оба пошли (в основном я!) по неправильной садовой дорожке, так сказать. Такого рода ошибки могут привести к потере большого количества времени, но мы учимся. Например, я не собираюсь повторять эту ошибку в течение некоторого времени (мы надеемся). Я все еще делаю кучу кода vb.net, и поэтому я буду помнить об этом, когда буду пытаться присвоить значение true/false чему-то, что требует 0 или 1 в качестве целочисленного значения. И мы также изучили кое-какой аккуратный код, например, как мы можем заполнить список RB целой кучей вариантов из кода. И у нас есть ОЧЕНЬ удобный кусок кода MyRstP, который мы можем использовать снова и снова.

Albert D. Kallal 22.02.2023 19:43

Завтра к 10:30 у меня будет демоверсия, и этот фрагмент должен был сработать до этого, благодаря вашему потрясающему опыту и невероятному терпению. Большое большое спасибо.

Tairoc 22.02.2023 19:50

См. мое последнее редактирование, я публикую файл css о том, как я заставил RB выглядеть ОЧЕНЬ по-другому с помощью таблицы стилей. (они становятся таблетками, если вы вводите больше текста — это CSS, который я использовал для некоторых своих снимков экрана.

Albert D. Kallal 22.02.2023 20:42

Вы просто слишком удивительны и очень, очень щедры. Огромное спасибо. Я применил CSS, и он выглядит великолепно.

Tairoc 23.02.2023 02:48

Привет, Альберт, у меня небольшая проблема с приложением css. Поскольку я использую его сейчас, и поскольку у меня есть флажок, который просит пользователя проверить, совпадает ли платежный адрес с почтовым адресом, флажок исчез с экрана. Я знаю, причина в том, что у вас есть это в стилях как display:none; Если я изменю его на блокировку, он испортит переключатель. Могу ли я изменить его для работы с моим флажком? Это не имеет большого значения. Я могу удалить стили, даже если они классные. Я размещаю флажок немного выше на тот случай, если у вас есть время взглянуть на него.

Tairoc 23.02.2023 06:27

Это немного ошибка в этом css. Измените ".rMyChoice input[type=radio], input[type=checkbox]" на .rMyChoice input[type=radio] --- это было ошибкой. Итак, удалите часть флажка из этого css. Позвольте мне немного опубликовать обновленный стиль для этого.

Albert D. Kallal 23.02.2023 07:14

Отредактируйте, см. новую таблицу стилей. Материал флажка удален - и его все равно не должно было быть. Попробуйте новую таблицу стилей.

Albert D. Kallal 23.02.2023 07:34

Другие вопросы по теме