Получить поле со страницы служб отчетов SQL Server - PullRequest
0 голосов
/ 26 февраля 2009

Я пытаюсь получить доступ к раскрывающемуся списку со страницы, созданной службами отчетов SQL Server с использованием JavaScript. Обычно я просто получаю getElementById, но атрибуты id и name для выпадающего элемента генерируются сервером, поэтому я не хочу использовать это для ссылки на элемент. Т.е. если в будущем дизайн страницы изменится, она назовет эти элементы _ct105 или _ct107

Единственное, что я указываю на странице, - это метка «Рабочий период». Я думал об использовании xpath для ссылки на этот промежуток, а затем использовал относительное местоположение для следующего элемента select, но я не могу понять, как это сделать.

В идеале, я бы мог указать идентификатор или имя (или любой другой атрибут) самого элемента Select. Возможно ли это?

Я буду использовать jQuery на странице, так что если кто-нибудь сможет придумать, как найти его таким образом, было бы здорово.

<tr IsParameterRow="true">
<td class="ParamLabelCell">
    <span>Business Period</span>
</td>
<td class="ParamEntryCell" style="padding-right:0px;">
    <div>
        <select name="ctl140$ctl00$ctl03$ddValue" id="ctl140_ctl00_ctl03_ddValue"> <!-- This is the select box I want -->
            <option value="0">&lt;Select&nbsp;a&nbsp;Value&gt;</option>
            <option value="1">Customer</option>
            <option value="2">Previous&nbsp;Week</option>
            <option value="3">Current&nbsp;Week</option>
            <option value="4">Next&nbsp;Week</option>
        </select>
    </div>
</td>

1 Ответ

2 голосов
/ 26 февраля 2009

Если вы уже используете jQuery, тогда XPath будет излишним. Я вижу несколько разных подходов к этому в jQuery. В jQuery используются селекторы CSS, поэтому все они работают так:

/* this attaches to selectboxes, which are in a div,
 * which is in a [TD] with class ParamEntryCell
 */
 $("td.ParamEntryCell div select");
 /* selects a selectbox whose id attribute starts with "ctl"
  * in an element with class ParamEntryCell 
  */
 $(".ParamEntryCell select[name^='ctl']")
 $("td.ParamEntryCell div select");
 /* selects a selectbox whose id attribute starts with "ctl"
  * in an element with class ParamEntryCell 
  */
 $(".ParamEntryCell select[id^='ctl']")

Тогда, чтобы использовать один из них, вы просто используете методы сборки jQuery:

$(".ParamEntryCell select[id^='ctl']").change(function(){
    var val = $(this).val();
    alert(val);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...