首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数类型“Edm.DateTime”和“Edm.String”与此操作不兼容

参数类型“Edm.DateTime”和“Edm.String”与此操作不兼容
EN

Stack Overflow用户
提问于 2013-05-14 09:45:00
回答 1查看 3.9K关注 0票数 1

我正在尝试过滤两种不同的(数据选择器),它们位于网格的同一列中。我试着用这两个字段到达一个命令。整个过滤过程在后面的代码中进行,到目前为止,它正在处理网格中的其他字段。但首先我得到了一个奇怪的例外:

{“参数类型'Edm.DateTime‘和'Edm.String’与此操作不兼容。接近大于或等于表达式,第6行,第15列”}

在DB中,字段是一个日期时间,它是一个单独的列。

我的代码:

代码语言:javascript
复制
                    <telerik:GridBoundColumn DataField="EntryDate" DataType="System.DateTime" DataFormatString="{0:dd/MM/yyyy}" FilterControlAltText="Filter EntryDate column"
                        HeaderText="Date" SortExpression="EntryDate" UniqueName="EntryDate" FilterControlWidth="50px">
                        <FilterTemplate>
                            From
                            <telerik:RadDatePicker ID="FromOrderDatePicker" runat="server" Width="100px" AutoPostBack="true"
                                OnSelectedDateChanged="FromOrderDatePicker_SelectedDateChanged" OnPreRender="FromOrderDatePicker_PreRender" />
                            to
                            <telerik:RadDatePicker ID="ToOrderDatePicker" runat="server" Width="100px" AutoPostBack="true"
                                OnSelectedDateChanged="ToOrderDatePicker_SelectedDateChanged" OnPreRender="ToOrderDatePicker_PreRender" />

                        </FilterTemplate>
                    </telerik:GridBoundColumn> 

代码背后:

代码语言:javascript
复制
     protected void FromOrderDatePicker_SelectedDateChanged(object sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
            {
                RadDatePicker picker = sender as RadDatePicker;
                ViewState["FromDatePicker"] = DateTimeToString(picker.SelectedDate.Value);

                ExpressionChanged();
            }
            protected void FromOrderDatePicker_PreRender(object sender, EventArgs e)
            {
                if (ViewState["FromDatePicker"] != null)
                {
                    RadDatePicker picker = sender as RadDatePicker;
                    picker.SelectedDate = StringToDateTime(ViewState["FromDatePicker"].ToString());
                }
            }


  private string DateTimeToString(DateTime dt)
    {
        return dt.Month + "/" + dt.Day + "/" + dt.Year;
    }
    private DateTime StringToDateTime(string s)
    {
        string[] dts = s.Split('/');
        DateTime dt = new DateTime(Int32.Parse(dts[2]), Int32.Parse(dts[0]), Int32.Parse(dts[1]));
        return dt;
    }

发布代码(对于toDatePicker)将是多余的

代码语言:javascript
复制
 private void ExpressionChanged()
    {
        //reset
        TimeReportGrid.MasterTableView.FilterExpression = null;
        TimeReportGrid.MasterTableView.Rebind();


        if (ViewState["FromDatePicker"] != null &&
            ViewState["ToDatePicker"] != null &&
            ViewState["FromDatePicker"].ToString() != "" &&
            ViewState["ToDatePicker"].ToString() != "")
        {
            TimeReportGrid.MasterTableView.FilterExpression += "(it.EntryDate >= '" + ViewState["FromDatePicker"].ToString() + "') AND (it.EntryDate <= '" + ViewState["ToDatePicker"].ToString() + "')";
        }

如果有什么问题,可以随便问一下。

谢谢你的帮助和快速的回答!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-16 09:14:53

我的问题的答案很简单,我只需要声明EntryDateis,一个类似于这个日期的时间。

代码语言:javascript
复制
TimeReportGrid.MasterTableView.FilterExpression += "(it.EntryDate>= DATETIME '" + ViewState["FromDatePicker"].ToString() + " 00:00') AND (it.EntryDate<= DATETIME '" + ViewState["ToDatePicker"].ToString() + " 23:59')";

很简单,但我得花点时间才能拿到

如果有什么问题,请随便问问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16539922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档