【问题标题】:Using Calendar1_SelectionChanged to create SqlParameter使用 Calendar1_SelectionChanged 创建 SqlParameter
【发布时间】:2013-03-06 13:24:52
【问题描述】:

我无法让我的 SqlParameter 在我的 SqlDataSource 选择命令中工作。 I'm trying to run a query when a new calendar date on a calendar control is selected to filter the query by the date selected.这是我在 C# 端的内容:

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    SqlParameter para1 = new SqlParameter("@mydate", SqlDbType.DateTime);
    para1.Value = Calendar1.SelectedDate;
    SqlDataSource1.SelectParameters.Add(para1);
}

我/几乎/通过这个线程找到了我需要的东西: How can I set the sqldatasource parameter's value?

但最佳答案提供的解决方案为 SelectParameters.Add 行提供了以下错误: “最好的重载匹配......有一些无效的参数。”

如何修复此错误并让参数在我的选择查询中起作用?

谢谢。

【问题讨论】:

  • 可以试试SqlDbType.DateTime2
  • @jordanhill123 感谢您的想法;遗憾的是,什么都没有改变。
  • 触发此事件时Calendar1.SelectedDate 的值是多少?
  • 当页面加载时,日历设置为今天的日期,格式如下:3/6/2013 12:00:00 AM
  • 可能听起来很傻,但你能确认Calendar1.SelectedDate 正在返回一个DateTime 对象吗?

标签: c# asp.net


【解决方案1】:

根据关于 Jon Skeet 在此链接上的回答的评论: Setting DateTime as a SqlDataSource parameter for Gridview,试试把这行改成

para1.Value = Calendar1.SelectedDate.ToString();

看看是否可行。

编辑 根据 jadarnel27 的评论,请尝试以下操作:

SqlDataSource1.SelectParameters.Add("@mydate", SqlDbType.DateTime, Calendar1.SelectedDate.ToString());

由于SQLParameter.Valueobject 类型,重载可能会对Calendar1.SelectedDate.ToString() 进行一些验证以匹配SQLDbType

【讨论】:

  • 尽管我什至不想考虑与 Jon Skeet 作对...我看不出将日期对象转换为字符串表示的逻辑。转换回日期对象时出错太多了
  • @freefaller Jon Skeet 说 not 在链接的答案中从 DateTime 转换为字符串(所以同意你所说的)。 jordanhill123 这里指的是 Skeet 回答下面另一个问题的 OP 的 cmets,说他们必须转换为字符串,因为 DateTime 作为他使用的方法的参数无效。
  • @freefaller 我也看不到逻辑,但不确定还有哪里出错了。它适用于 OP,但我也不喜欢它......它可能与它在 asp.net 中的使用或特定的日历实现有关吗?只是想测试一下它是否有效
  • 这里的 OP 最好使用 Jon 在链接问题中使用的重载:SqlDataSource1.SelectParameters.Add("@mydate", SqlDbType.DateTime, Calendar1.SelectedDate.ToString());
  • 公平的家伙 (@jadarnel27) - 并没有完全理解发生了什么。我唯一的猜测是这个日历控件没有返回 .net 标准 DateTime 对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多