[javascript]从 VB 中的 CheckComboBox 捕获“ID”

· 收录于 2024-01-06 16:54:06 · source URL

问题详情

我正在使用此控件: https://demos.devexpress.com/aspxeditorsdemos/ASPxDropDownEdit/CheckComboBox.aspx

我目前在js中有这个:

var textSeparator = ";";
function updateText() {
    var selectedItems = listbox_destinatarios.GetSelectedItems();
    dropdownedit_dest.SetText(getSelectedItemsText(selectedItems));
}

function synchronizeListBoxValues(dropDown, args) {
    listbox_destinatarios.UnselectAll();
    var texts = dropDown.GetText().split(textSeparator);
    var values = getValuesByTexts(texts);
    listbox_destinatarios.SelectValues(values);
    updateText(); // for remove non-existing texts
}

function getSelectedItemsText(items) {
    var texts = [];
    for (var i = 0; i < items.length; i++)
        texts.push(items[i].text);
    return texts.join(textSeparator);
}

function getValuesByTexts(texts) {
    var actualValues = [];
    var item;
    for (var i = 0; i < texts.length; i++) {
        item = listbox_destinatarios.FindItemByText(texts[i]);
        if (item != null)
            actualValues.push(item.value);
    }
    return actualValues;
}

在 HTML 中:

<dx:ASPxDropDownEdit ID="dropdownedit_dest" ClientInstanceName="dropdownedit_dest"
    runat="server" Width="100%" EncodeHtml="false" ReadOnly="true" Required="true">
    <DropDownWindowStyle BackColor="#EDEDED" />
    <DropDownWindowTemplate>                                         
        <dx:ASPxListBox ID="listbox_destinatarios" runat="server" Height="200px"
            ClientInstanceName="listbox_destinatarios" Width="100%" 
            ItemStyle-SelectedStyle-BackColor="WhiteSmoke" 
            ItemStyle-SelectedStyle-ForeColor="Black" SelectionMode="CheckColumn
            AutoPostBack="false" ItemStyle-Font-Size="Small" Font-Size="Small"
            EnableSelectAll="true"><%----%>

            <FilteringSettings ShowSearchUI="false" />
            <Border BorderStyle="None" />
            <BorderBottom BorderStyle="Solid" BorderWidth="1px" />

            <ClientSideEvents SelectedIndexChanged="updateText" Init="updateText" />

        </dx:ASPxListBox>
    </DropDownWindowTemplate>  

    <ClientSideEvents TextChanged="synchronizeListBoxValues" 
        DropDown="synchronizeListBoxValues"/>       
    <ClientSideEvents Init="function(s, e) { validar_init(); }" />

    <ValidationSettings ErrorTextPosition="Bottom" 
        ErrorFrameStyle-CssClass="pull-right" ErrorDisplayMode="Text">
        <RequiredField IsRequired="true" />
    </ValidationSettings>

</dx:ASPxDropDownEdit>

我正在尝试获取变量中的值 (ID) VB.net

所以:dropdownedit_dest。值.ToString()

但是,由于 Value 为我提供了文本而不是 ID,因此当我在 js 中检查值时,如果 id 存在,那么在 VB 中咨询时,它会在文本中显示我。

试过这个,但它不起作用:

Protected Sub Concatenar_Destinatarios()
    Dim list_destinatarios As ASPxListBox = 
        CType(dropdownedit_dest.FindControl("listbox_destinatarios"), ASPxListBox)

    If list_destinatarios.SelectedValues.Count > 0 Then
        Dim seleccionados As New List(Of String)
        For Each index As Integer In list_destinatarios.SelectedIndices
            Dim selectedValue As String =
                list_destinatarios.Items(index).Value.ToString()
            seleccionados.Add(selectedValue)
        Next

        Dim concatenatedValues As String = String.Join(",", seleccionados.ToArray())

        result = concatenatedValues
    Else
        Register_Error(_consulta._ErrorException)
        Error 51
    End If
End Sub

最佳回答

暂无回答