LINQ: найдите все проверенные флажки в GridView

Время прошло бы к Вашему времени сервера. Легкое обходное решение для этого должно вручную установить часовой пояс при помощи date_default_timezone_set перед date() или time() , функции вызваны к.

я нахожусь в Мельбурне, Австралия , таким образом, у меня есть что-то вроде этого:

date_default_timezone_set('Australia/Melbourne');

Или другой пример LA - США :

date_default_timezone_set('America/Los_Angeles');

можно также видеть, какой часовой пояс сервер в настоящее время на пути:

date_default_timezone_get();

Так что-то как:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

, Таким образом, короткий ответ для Вашего вопроса был бы:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

Тогда все времена были бы к часовому поясу, который Вы просто устанавливаете:)

12
задан p.campbell 5 August 2009 в 16:21
поделиться

3 ответа

Я почти уверен, что от этого вы не добьетесь какого-либо улучшения производительности, но это может немного облегчить чтение:

var checkedIDs = from GridViewRow msgRow in messagesGrid.Rows
                 where ((CheckBox)msgRow.FindControl("chkUpdateStatus")).Checked
                 select Int32.Parse(messagesGrid.DataKeys[msgRow.RowIndex].Value.ToString());

Опять же, нет конечно, это имеет значение. Кроме того, почему вы конвертируете в строку, а затем в int? Что-то Convert.ToInt32 не может для вас сделать?

20
ответ дан 2 December 2019 в 04:33
поделиться

Я не уверен, что Rows является IEnumerable, а может и не быть, но я предполагаю, что это так

List<int> checkedIDs = messagesGrid.Rows
  .Where<GridViewRow>(i => (CheckBox)i.FindControl("chkUpdateStatus").Checked)
  .Select<GridViewRow, int>(i => return int.Parse(messagesGrid.DataKeys[i.RowIndex].Value.ToString()))
  .ToList<int>();

Я только что сделал это в блокноте, там может быть ошибка компиляции. Но вот как вы можете сделать то же самое с Linq.

9
ответ дан 2 December 2019 в 04:33
поделиться

У меня есть что-то похожее, но я использовал это в нескольких местах, поэтому я создал метод расширения.

public static void ActOnCheckedRows(this GridView gridView, string checkBoxId, Action<IEnumerable<int>> action)
{
   var checkedRows = from GridViewRow msgRow in gridView.Rows
                     where ((CheckBox)msgRow.FindControl(checkBoxId)).Checked
                     select (int) gridView.DataKeys[msgRow.RowIndex].Value;

    action(checkedRows);
}

Итак, теперь я могу что-то делать со всеми проверенными строками. Компилятор довольно хорошо вычисляет типы, но иногда мне нужно явно объявить checkedRows как тип IEnumerable.

gvTasksToBill.ActOnCheckedRows("RowLevelCheckBox", checkedRows =>
{
    foreach (int id in checkedRows)
    {
       // do something with id
    }
});
4
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: