Как извлечь максимальную и минимальную даты из Sharepoint server 2010 с помощью клиентской объектной модели? - PullRequest
0 голосов
/ 13 декабря 2011

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

    public void PopulateTimeLog(String paymentStatus, String currentUser, timeLogDelegate populateCombo)
    {
        timeLogDelegateClient = populateCombo;

        ClientContext clientContext = ClientContext.Current;
        List list = clientContext.Web.Lists.GetByTitle("Time Log");

        string query = "<View>";
        query += "<Query>";
        query += "<Where>";
        query += "<And>";
        query += "<Eq>";
        query += "<FieldRef Name='Author'></FieldRef>";
        query += "<Value Type='Lookup'>" + currentUser + "</Value>";
        query += "</Eq>";
        query += "<Eq>";
        query += "<FieldRef Name='Payment_x0020_Status'></FieldRef>";
        query += "<Value Type='Text'>" + paymentStatus + "</Value>";
        query += "</Eq>";
        query += "</And>";
        query += "</Where>";
        query += "<OrderBy>";
        query += "<FieldRef Name='Created' Ascending='False'></FieldRef>";
        query += "</OrderBy>";                       
        query += "</Query>";
        query += "</View>";            

        CamlQuery Query = new CamlQuery();
        Query.ViewXml = query;

        listItemsTimeLog = list.GetItems(Query);
        //clientContext.Load(list);
        //clientContext.Load(listItemsTimeLog);

        clientContext.Load(listItemsTimeLog, itms => itms.Include(
                                                        itm => itm["Created"]));


        clientContext.ExecuteQueryAsync(HandleTimeLogRequestSucceeded, HandleTimeLogRequestFailed);

    }

    private void HandleTimeLogRequestSucceeded(object sender, ClientRequestSucceededEventArgs e)
    {
        ////call back on the UI thread
        System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
        {

            timeLogDelegateClient(listItemsTimeLog);
        });
    }

. В приведенном выше коде я получу максимальную дату в listItemsTimeLog для индекса 0 и минимальную дату в listItemsTimeLog для последнего индекса.В приведенном выше запросе я не хочу получить все даты в listItemsTimeLog.Как я могу упростить приведенный выше запрос, чтобы получить только два строковых значения - одна строка будет содержать максимальную дату, а другая строка будет содержать минимальную дату.Если я могу сделать это через веб-сервис, то это тоже хорошо для меня?Как я могу это сделать ?Можете ли вы предоставить мне какой-либо код, чтобы я мог решить вышеуказанную проблему?

1 Ответ

0 голосов
/ 13 декабря 2011

Для этого вы можете использовать RowLimit , например,

Max

<View>
  <Query>
    <Where>
      <And>
        <Eq>
          <FieldRef Name='Author'></FieldRef>
          <Value Type='Lookup'>[your use name]</Value>
        </Eq>
        <Eq>
          <FieldRef Name='Payment_x0020_Status'></FieldRef>
          <Value Type='Text'>[ your payment status]</Value>
        </Eq>
      </And>
    </Where>
    <OrderBy>
      <FieldRef Name='Created' Ascending='False'></FieldRef>
    </OrderBy>
  </Query>
 <RowLimit>1</RowLimit>
</View>

Min

<View>
  <Query>
    <Where>
      <And>
        <Eq>
          <FieldRef Name='Author'></FieldRef>
          <Value Type='Lookup'>[your use name]</Value>
        </Eq>
        <Eq>
          <FieldRef Name='Payment_x0020_Status'></FieldRef>
          <Value Type='Text'>[ your payment status]</Value>
        </Eq>
      </And>
    </Where>
    <OrderBy>
      <FieldRef Name='Created' Ascending='True'></FieldRef>
    </OrderBy>
  </Query>
 <RowLimit>1</RowLimit>
</View>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...