ASPxGridView - проблема формата даты - PullRequest
1 голос
/ 17 мая 2011

У меня проблема с форматом даты в ASPxGridView.

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

  < dxwgv:GridViewDataComboBoxColumn Caption="SERVICE MONTH" Name="ServiceMonthComboBox" Visible=true VisibleIndex="1" FieldName="ServiceMonth">
        < EditFormSettings VisibleIndex=1 Visible="false" />< CellStyle HorizontalAlign=Right />
        < PropertiesComboBox Style-Font-Names="Verdana" Style-Font-Size="X-Small" TextField="ServiceMonth" ValueField="ServiceMonth">
                < Style Font-Names="Verdana" Font-Size="X-Small">< /Style>
        < /PropertiesComboBox>< EditFormCaptionStyle ForeColor="Maroon" />
  < /dxwgv:GridViewDataComboBoxColumn>

Здесь ServiceMonth имеет тип DateTime.

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

        GridViewDataComboBoxColumn serviceMonthComboBox = CarHireExchangeGroupSummaryGridView.Columns["ServiceMonthComboBox"] as GridViewDataComboBoxColumn;

        serviceMonthComboBox.PropertiesComboBox.ValueType = typeof(DateTime);

        serviceMonthComboBox.PropertiesComboBox.Items.Clear();

        var serviceMonths = (from item in Presenter.CurrentModel.CarHireExchangeGroupSummaryRecords
                             select (item.ServiceMonth)).Distinct();

        foreach (var serviceMonth in serviceMonths)
        {
            serviceMonthComboBox.PropertiesComboBox.Items.Add(serviceMonth.ToString("MM/yyyy").Trim(), serviceMonth.ToString("MM/yyyy"));
        }

Здесь я связываю это поле со списком всех отдельных ServiceMonth в моих записях.

Теперь я хочу, чтобы, поскольку пользователь фильтрует записи с использованием любого ServiceMonth, тогда записи должны получить фильтр. Для этого я использовал событие OnProcessColumnAutoFilter следующим образом:

protected void CarHireExchangeGroupSummaryGridView_OnProcessColumnAutoFilter(object sender, ASPxGridViewAutoFilterEventArgs e)
{
            if (e.Kind == GridViewAutoFilterEventKind.CreateCriteria)
            {
                switch (e.Column.FieldName)
                {

                case "ServiceMonth":
                    if (!string.IsNullOrEmpty(e.Value))
                    {

                        ((OperandValue)((BinaryOperator)e.Criteria).RightOperand).Value = Convert.ToDateTime(e.Value.ToString());
                    }
                    break;
                }
            }
}

Теперь моя проблема в том, что полученное мной значение выглядит примерно так: «Ср. 1 декабря 00:00:00 CST 2010», теперь, когда я пытаюсь преобразовать это в DateTime, как показано выше, это дает мне ошибка, что «Входная строка не в правильном формате DateTime»

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

1 Ответ

1 голос
/ 19 мая 2011

Попробуйте установить для свойства PropertiesComboBox.ValueType значение System.DateTime, чтобы принудительно заставить редактор ASPXComboBox в AutoFilterRow преобразовывать значение его элементов в значения DateTime:

<PropertiesComboBox ... ValueType="System.DateTime"></PropertiesComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...