我遇到了与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 Type。
在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;
}
}
}
现在,我的问题是,我得到的价值是这样的:“Wed Dec 1 00:00:00 CST 2010”,现在,当我试图将其转换为DateTime作为上面的代码时,它给了我“以非正确的DateTime格式输入字符串”
的错误你能告诉我这个的原因以及解决问题的方法。
答案 0 :(得分:1)
尝试将PropertiesComboBox.ValueType设置为System.DateTime以强制AutoFilterRow的ASPxComboBox编辑器将其Items的值转换为DateTime值:
<PropertiesComboBox ... ValueType="System.DateTime"></PropertiesComboBox>