1

我有一个带有 2 个dateTimePicker控件(dtpStartdtpEnd)、一个按钮和一个datagridview显示结果的表单。datagridview绑定到bindingSource控件。

我想将控件中的两个date参数传递dateTimePicker给存储过程,以便在我的 datagridview 上返回所需的范围。

我的存储过程如下所示:

CREATE PROC [dbo].[ProcTest](@StartDate date, @EndDate date)
AS
SELECT * FROM Test WHERE ModifiedDate BETWEEN @StartDate AND @EndDate

我的 C# 代码是:

    private void button1_Click(object sender, EventArgs e)
    {
        dc = new NorthwindDataContext();

        var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
        bindingSource1.DataSource = Qry;
    }

当我运行上面的代码时,我的数据网格上什么也没有收到,dtpEnd.value显示:13/08/2012 02:15:29,我认为这是一个转换问题,因为我date在存储过程中使用了类型并且datetimepicker值是一个dateTime类型。

请问,这个怎么解决?

4

4 回答 4

2

您需要检索查询的结果,例如:

bindingSource1.DataSource = Qry.ToList();

我认为问题根本不在于 Date 参数。这是根据:

http://msdn.microsoft.com/en-us/library/bb386947.aspx

于 2012-08-13T04:10:50.057 回答
0

而不是这个

var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);

使用它并检查您的问题是否得到解决。

var Qry = dc.ProcTest(dtpStart.ToString("dd-MMM-yyyy"), dtpEnd.ToString("dd-MMM-yyyy"));
于 2012-08-13T05:23:56.497 回答
0

感谢 Dave R. 提供的链接:http: //msdn.microsoft.com/en-us/library/bb386947.aspx我发现我的代码无需任何修改即可工作。所以我首先通过从 SP 中删除参数来搜索错误,然后我发现我必须创建一个指向 SP 结果的新数据源对象,并在设计时将其绑定到 datagridview。现在数据网格显示数据和参数正在工作。

对不起,伙计们,在发布我的问题之前,我必须验证这一点,但我对日期参数的使用感到非常困惑。

所以我将代码保留在最初的问题中:

private void button1_Click(object sender, EventArgs e)
{
    dc = new NorthwindDataContext();

    var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
    bindingSource1.DataSource = Qry;
}
于 2012-08-13T14:17:35.510 回答
-1

我相信您需要发送日期,而不是您的日期时间选择器的值。

基本上,改变这一行:

var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);

读书:

var Qry = dc.ProcTest(dtpStart.SelectedDate.Value, dtpEnd.SelectedDate.Value);

如果这仍然不起作用,我会尝试:

var Qry = dc.ProcTest(dtpStart.SelectedDate.Value.Date, dtpEnd.SelectedDate.Value.Date);
于 2012-08-13T03:05:32.277 回答