Динамический фильтрованный поиск в SharePoint 2007 - PullRequest
0 голосов
/ 09 мая 2011

Доброе утро всем.Я ищу помощь в настройке шаблона библиотеки в SharePoint 2007 .Вот подробности:

  • У меня есть родительский сайт с несколькими дочерними сайтами.

  • Я хочу создать шаблон библиотеки, который затем можно будетразмещены на каждом дочернем сайте.Эти библиотеки собираются извлечь из серии централизованных списков на родительском сайте для предоставления опций метаданных.Таким образом, мне нужно только поддерживать один набор списков, и информация об обслуживаемом списке будет доступна для каждой библиотеки.

  • Поскольку библиотеки существуют на дочерних сайтах основного сайта, я могу 'т использовать простые поиски.Обычный тип столбца поиска работает только для списков на текущем сайте.

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

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

  • Я хочу, чтобы первый отфильтрованный поиск предоставил пользователю список вариантов выбора.В настоящее время это работает правильно.

  • Я хочу, чтобы второй отфильтрованный поиск предоставлял отфильтрованный список вариантов на основе выбора в первом отфильтрованном поиске.

  • Есть раздел для строки фильтра запросов CAML, и это где мое зависание.Как написать строку для ссылки на поле, а не на статическое значение?

Это то, что я пробовал.В поле Apply Query Filter я поставил:

<Where>
  <Eq>
    <FieldRef Name='Category' /><Value Type='Lookup'>Blue</Value>
  </Eq>
</Where>

Это работает, но дает результаты, только если значение равно Blue , статическая строка.Я ищу способ ссылки на фактическое выбранное значение Категория .Это будет что-то вроде:

<Where>
  <Eq>
    <FieldRef Name='Category' /><Value Type='Lookup'>[Category.Value]</Value>
  </Eq>
</Where>

Мое зависание на данный момент - я не знаю правильный синтаксис, или если такой синтаксис вообще существует.

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

1 Ответ

0 голосов
/ 26 июля 2011

Это старый вопрос, но я только что наткнулся на него - на тот случай, если пользователю все еще нужна помощь, я решил ответить. Вы можете сделать это 2 способами: 1. Обратный звонок 2. Строка запроса

В любом случае все будет работать нормально и предоставит данные для вашего запроса. Хитрость заключается в том, чтобы добавить параметр поиска, что-то вроде:

<ParameterBinding Name="Category" Location="Control(Filter1)" DefaultValue=""/>

или

<ParameterBinding Name="Category" Location="QueryString(Filter1)" DefaultValue=""/>

Затем вы можете ссылаться на переменную в вашем CAML-запросе командой выбора SPDataSource:

<Where>
<Eq>
    <FieldRef Name='Category' /><Value Type='Lookup'>{Category}</Value>
  </Eq>
</Where>

Имя переменной выше {Category} - это имя, предоставляемое привязкой ParameterBinding.

Надеюсь, это поможет.

...