首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用Excel在剑格kendoDropDownList中选择项

尝试使用Excel在剑格kendoDropDownList中选择项
EN

Stack Overflow用户
提问于 2017-12-22 15:37:51
回答 2查看 298关注 0票数 0

我试图在公司内部网页上的下拉列表中选择一个项目。我能够设置文本条目并打开下拉列表,但我很难找到如何做出选择

在其他方面,我可以使用ID和td/tr标记进行选择,但是这个例程没有带有条目名称的tr/td标记。

以下是我迄今尝试过的几件事:

这两个项执行相同的功能,并在打开第一个下拉时工作良好。

代码语言:javascript
运行
复制
ie.Document.getElementById("FromDistrict").Click
ie.Document.parentWindow.execScript "$('#FromDistrict').kendoDropDownList('open');"

我试过几种变体:

代码语言:javascript
运行
复制
  ie.Document.parentWindow.execScript "$('#FromDistrict').data('kendoGrid').dataItem($('transport').data('kendoDropDownList').select('KILGORE'));"
  ie.Document.parentWindow.execScript "$('#FromDistrict').data('kendoGrid').data('kendoDropDownList').select('KILGORE'));"
  ie.Document.parentWindow.execScript "$('#FromDistrict').data('kendoGrid').data('kendoDropDownList').select('eq:0'));"
  ie.Document.parentWindow.execScript "$('#FromDistrict').data('kendoDropDownList').select('KILGORE'));"
  ie.Document.parentWindow.execScript "$('#FromDistrict').select('KILGORE'));"

查看这个特定段的源代码的是:

代码语言:javascript
运行
复制
</div>
<form action="/TransferLoad/Add" method="post"><input name="__RequestVerificationToken"  _ 
type="hidden" value="IP80d5XM-Qi0XQ1-IgGKGmhLVNGdtDAyM-r7lJ6yQCI1RIdJJph0uPnz-DzEHx12_booO4xwvcWg6EUWPiLnHv7ww6PD-aqfhiVxPcy-VYm6mnBRHsba3H7Hembliybo0" />  _ 
  <div class="k-block k-info-colored">
    <div class="k-header">
        <span>Add Transfer Load Details</span>
    </div>
    <div class="k-content">
        <div class="infocontainer">
            <table>
                <tr>
                    <td class="columnLabel">
                        <label for="From_District:">From District:</label>
                    </td>
                    <td class="columnData">
                        <input id="FromDistrict" name="FromDistrict" style="width: 200px" type="text" />
 <script>
  jQuery(function(){jQuery("#FromDistrict").kendoDropDownList({"dataSource" _ 
 :{"transport":{"read": {"url":"/DistrictProfiles/GetUserDistricts","data": _ 
 function() { return kendo.ui.DropDownList.requestData(jQuery("#FromDistrict"));  }}, _ 
 "prefix":""}, "serverFiltering":true,"filter":[],"error":OnError, _ 
 "schema": {"errors":"Errors"}},  "dataTextField":"DistrictName","autoBind":true, _ 
 "dataValueField":"DistrictCode", "optionLabel":"Select District..."});});
</script>
                    </td>
                    <td class="columnLabel">    'Next dropdown section starts here
                        <label for="To_District:">To District:</label>
                    </td>

当下拉列表打开时,它有2项可供选择,但代码中的任何地方都找不到列出的这2项,所以我假设它们是从这一行中提取出来的:return kendo.ui.DropDownList.requestData(jQuery("#FromDistrict")),但我不确定。,有人能指出我在这里错过了什么吗?

我没有发布“视图元素”,因为复制它很困难。所有选择都会动态更改其他选择选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-05 03:27:32

在浏览器DOM explorer (它显示由呈现引擎“计算/清理”的标记)中,您应该看到

代码语言:javascript
运行
复制
<input id="FromDistrict" name="FromDistrict" style="width: 200px" type="text" />

已更改为包含datalist属性。例如:

代码语言:javascript
运行
复制
<input id="FromDistrict" name="FromDistrict" style="width: 200px" type="text" datalist="DistrictName" />

.在DOM的后面,您应该看到由Kendo代码注入到DOM中的datalist元素。

代码语言:javascript
运行
复制
<datalist id="DistrictName">
<option value="Kent">Kent</option>
<option value="Surry">Surry</option>
</datalist>

您应该能够通过向FromDistrict分配一个有效的逗号分隔列表来自动化该字段。

例如:值=‘Kent,Surry';

票数 1
EN

Stack Overflow用户

发布于 2018-01-06 21:39:46

我能够以一种简单的方式用下面的方法来完成我想要的,但我正在研究一种更有效的方法。

代码语言:javascript
运行
复制
'Choose the FROM district
ie.Document.parentWindow.execScript "$('#FromDistrict').kendoDropDownList('open');"
Dim FrDist, li
Set FrDist = ie.Document.getElementById("FromDistrict-list").getElementsByTagName("li")
    Dim fd
    fd = 0
    For Each li In FrDist
        'MsgBox ("li.innertext is -   " & li.innerText & " fd value is: " & fd)
        If li.innerText Like "*KILGORE*" Then
           FrDist(fd).Click
         Else
         'Do Nothing
       End If
        fd = fd + 1
        'Application.Wait (Now + TimeValue("0:00:02"))
    Next

Application.Wait (Now + TimeValue("0:00:02"))

'Choose the TO district
ie.Document.parentWindow.execScript "$('#ToDistrict').kendoDropDownList('open');"
Dim ToDist
Set ToDist = ie.Document.getElementById("ToDistrict-list").getElementsByTagName("li")
    Dim tod
    tod = 0
    For Each li In ToDist
        'MsgBox ("li.innertext is -   " & li.innerText & " tod value is: " & tod)
        If li.innerText Like "*KILGORE*" Then
           ToDist(tod).Click
         Else
            'Do Nothing
       End If
        tod = tod + 1

    Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47943975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档