Как добавить «Фильтр подстановочных знаков BDC» в метод ReadList - PullRequest
2 голосов
/ 22 декабря 2011

Доброе утро:)

Ситуация: в SP2010 у меня есть список клиентов с полем внешних данных. В решении у меня есть модель BDC с сущностью, которая содержит метод «ReadItem» и «ReadList». Когда я развертываю свою функцию и устанавливаю права доступа к объекту, я могу читать Предмет без проблем. Теперь я должен искать предмет. Я следую этой инструкции, чтобы создать Фильтр: http://msdn.microsoft.com/en-us/library/ee471425.aspx, но он не работает, потому что у меня всегда одно и то же значение в моем параметре ("**") ..

Вопрос: 1. Как я могу назначить входные данные поиска для параметра? 2. Что-то другое не так?

код

    public IEnumerable<Oppertunity> ReadList(String inputParameter)
    {
        using (CRMDataClassesDataContext db = new CRMDataClassesDataContext("server=xxx;database=xxx; uid=xxx ;pwd=xxx"))
        {
            List<Oppertunity> oppertunities = new List<Oppertunity>();

                var q = from c in db.Opportunities
                        where c.Name.Contains(inputParameter)
                        orderby c.Name ascending
                        select new Oppertunity
                        {
                            OppertunityId = c.OpportunityId,
                            Name = c.Name,
                        };

                foreach (var o in q)
                {
                    Oppertunity oppertunity = new Oppertunity();

                    oppertunity.OppertunityId = o.OppertunityId;
                    oppertunity.Name = o.Name;

                    oppertunities.Add(oppertunity);
                }
            }

            return oppertunities;
        }

Часть BDC выглядит как инструкция для msdn:

<?xml version="1.0" encoding="utf-8"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog" Name="BdcModel1">
  <LobSystems>
    <LobSystem Name="BdcModel1" Type="DotNetAssembly">
      <LobSystemInstances>
        <LobSystemInstance Name="BdcModel1" />
      </LobSystemInstances>
      <Entities>
          <Properties>
            <Property Name="Class" Type="System.String">NX.Intra.Bcs.BdcModel1.ContactService, BdcModel1</Property>
          </Properties>
          <Identifiers>
            <Identifier Name="ContactId" TypeName="System.Guid" />
          </Identifiers>
          <Methods>
            <Method Name="ReadList">
              <Parameters>
                <Parameter Name="returnParameter" Direction="Return">
                  <TypeDescriptor Name="ContactList" TypeName="System.Collections.Generic.IEnumerable`1[[NX.Intra.Bcs.BdcModel1.Contact, BdcModel1]]" IsCollection="true">
                    <TypeDescriptors>
                      <TypeDescriptor Name="Contact" TypeName="NX.Intra.Bcs.BdcModel1.Contact, BdcModel1">
                        <TypeDescriptors>
                          <TypeDescriptor Name="ContactId" TypeName="System.Guid" IdentifierName="ContactId" IsCollection="false" ReadOnly="true">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">false</Property>
                            </Properties></TypeDescriptor>
                          <TypeDescriptor Name="FirstName" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                            </Properties>
                            </TypeDescriptor>
                          <TypeDescriptor Name="LastName" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                            </Properties>
                            </TypeDescriptor>
                          <TypeDescriptor Name="AccountIdName" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                            </Properties>
                            </TypeDescriptor>
                          <TypeDescriptor Name="FullName" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">false</Property>
                            </Properties>
                            </TypeDescriptor></TypeDescriptors></TypeDescriptor></TypeDescriptors></TypeDescriptor></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadList" Type="Finder" Default="true" DefaultDisplayName="Read List" ReturnParameterName="returnParameter" />
              </MethodInstances></Method>
            <Method Name="ReadItem">
              <Parameters>
                <Parameter Name="returnParameter" Direction="Return">
                  <TypeDescriptor Name="Contact" TypeName="NX.Intra.Bcs.BdcModel1.Contact, BdcModel1">
                    <TypeDescriptors>
                      <TypeDescriptor Name="ContactId" TypeName="System.Guid" IsCollection="false" IdentifierName="ContactId" />
                      <TypeDescriptor Name="LastName" TypeName="System.String" />
                      <TypeDescriptor Name="FirstName" TypeName="System.String" />
                      <TypeDescriptor Name="AccountIdName" TypeName="System.String" />
                      <TypeDescriptor Name="FullName" TypeName="System.String" /></TypeDescriptors>
                    </TypeDescriptor>
                  </Parameter>
                <Parameter Name="id" Direction="In">
                  <TypeDescriptor Name="ContactId" TypeName="System.Guid" IdentifierName="ContactId" IsCollection="false" /></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadItem" Type="SpecificFinder" Default="true" DefaultDisplayName="Read Item" ReturnParameterName="returnParameter" />
              </MethodInstances>
              </Method>
          </Methods></Entity>
        <Entity Name="Oppertunity" Namespace="NX.Intra.Bcs.BdcModel1" Version="1.0.0.144">
          <Properties>
            <Property Name="Class" Type="System.String">NX.Intra.Bcs.BdcModel1.Oppertunity, BdcModel1</Property>
            <Property Name="Title" Type="System.String">FirstName</Property>
          </Properties>
          <Identifiers>
            <Identifier Name="OppertunityId" TypeName="System.Guid" />
          </Identifiers>
          <Methods>
            <Method Name="ReadList" IsStatic="false">
              <FilterDescriptors>
                <FilterDescriptor Name="OppertunityNameFilter" Type="Wildcard" DefaultDisplayName="Suche nach Name" FilterField="Name">
                  <Properties>
                    <Property Name="UsedForDisambiguation" Type="System.Boolean">true</Property>
                  </Properties>
                  </FilterDescriptor>
              </FilterDescriptors>
              <Parameters>
                <Parameter Name="returnParameter" Direction="Return">
                  <TypeDescriptor Name="OppertunityList" TypeName="System.Collections.Generic.IEnumerable`1[[NX.Intra.Bcs.BdcModel1.Oppertunity, BdcModel1]]" IsCollection="true">
                    <TypeDescriptors>
                      <TypeDescriptor Name="Oppertunity" TypeName="NX.Intra.Bcs.BdcModel1.Oppertunity, BdcModel1">
                        <TypeDescriptors>
                          <TypeDescriptor Name="OppertunityId" TypeName="System.Guid" IsCollection="false" IdentifierName="OppertunityId">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">false</Property>
                            </Properties></TypeDescriptor>
                          <TypeDescriptor Name="Name" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                            </Properties></TypeDescriptor></TypeDescriptors></TypeDescriptor></TypeDescriptors></TypeDescriptor></Parameter>
                <Parameter Name="inputParameter" Direction="In">
                  <TypeDescriptor Name="OppertunityFinderTD" TypeName="System.String" AssociatedFilter="OppertunityNameFilter">
                    <TypeDescriptors>
                      <TypeDescriptor Name="Oppertunity" TypeName="NX.Intra.Bcs.BdcModel1.Oppertunity, BdcModel1">
                        <TypeDescriptors>
                          <TypeDescriptor Name="OppertunityId" TypeName="System.Guid" IdentifierName="OppertunityId" IsCollection="false">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">false</Property>
                            </Properties></TypeDescriptor>
                          <TypeDescriptor Name="Name" TypeName="System.String">
                            <Properties>
                              <Property Name="ShowInPicker" Type="System.Boolean">true</Property>
                            </Properties></TypeDescriptor></TypeDescriptors></TypeDescriptor></TypeDescriptors></TypeDescriptor></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadList" Type="Finder" ReturnParameterName="returnParameter" Default="true" DefaultDisplayName="Read List">
                  <Properties>
                    <Property Name="UseClientCachingForSearch" Type="System.String"></Property>
                    <Property Name="RootFinder" Type="System.String"></Property>
                  </Properties></MethodInstance>
              </MethodInstances></Method>
            <Method Name="ReadItem">
              <Parameters>
                <Parameter Name="returnParameter" Direction="Return">
                  <TypeDescriptor Name="Oppertunity" TypeName="NX.Intra.Bcs.BdcModel1.Oppertunity, BdcModel1">
                    <TypeDescriptors>
                      <TypeDescriptor Name="OppertunityId" TypeName="System.Guid" IdentifierName="OppertunityId" IsCollection="false" />
                      <TypeDescriptor Name="Name" TypeName="System.String" /></TypeDescriptors></TypeDescriptor>
                  </Parameter>
                <Parameter Name="id" Direction="In">
                  <TypeDescriptor Name="OppertunityId" TypeName="System.Guid" IdentifierName="OppertunityId" IsCollection="false" /></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadItemList" Type="SpecificFinder" ReturnParameterName="returnParameter" Default="true" DefaultDisplayName="Read Item" />
              </MethodInstances></Method>
          </Methods></Entity>
      </Entities>
    </LobSystem>
  </LobSystems>
</Model>

1 Ответ

1 голос
/ 11 апреля 2012

Обычно, когда вы используете внешний список, вы можете настроить значение параметра фильтра, отредактировав представление списка по умолчанию (или создав новое представление).

Надеюсь, это поможет; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...