2013-09-30 48 views
0
string _name = txtName.Text; 
string _addr = txtAddr.Text; 
DateTime _dof = DateTime.Parse(drpDate.SelectedValue + drpMonth.SelectedValue + drpYear.SelectedValue); 
string _country = drpCountry.SelectedValue; 
string _gender = rdiomf.SelectedValue; 

using (SqlConnection conn = conMgr.GetDatabaseConnection()) 
{ 
    using (SqlCommand cmd = new SqlCommand("insertStudent",conn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 

     cmd.Parameters.Clear(); 
     cmd.Parameters.AddWithValue("@sName", _name); 
     cmd.Parameters.AddWithValue("@sAddress", _addr); 
     cmd.Parameters.AddWithValue("@sDob", _dof); 
     cmd.Parameters.AddWithValue("@sCountry", _country); 
     cmd.Parameters.AddWithValue("@sGender", _gender); 

     cmd.ExecuteNonQuery(); 
    } 

    conn.Close(); 
} 

错误说错误日期。我使用下拉框获取日期。我怎样才能解决这个问题?请帮帮我。我是新来的存储过程和asp.net如何将日期时间传递到存储过程

+1

什么是'@ sDob'参数的类型?由于前缀's',我猜测varchar(string)。您应该将该参数改为“DateTime”类型。 –

+0

@Lasse V. Karlsen我的sDob参数是DateTime类型。不是字符串 –

+0

一些提示调试这个:你在哪一行得到错误,'DateTime.Parse'或'cmd.ExecuteNonQuery'?什么是下拉列表的值,进入'DateTime.Parse'的字符串是什么,'_dof'的值是多少(如果代码得到那么多)? –

回答

4

为此使用新的日期时间。

DateTime _dof = new DateTime(Convert.ToInt32(drpYear.SelectedValue), Convert.ToInt32(drpMonth.SelectedValue), Convert.ToInt32(drpDate.SelectedValue)); 
1

我认为使用三个下拉列表构建日期并不是一个好主意。处理验证非常困难。 (例如,2013年2月30日是有效日期?)请使用Patetimepicker中的.net构建。这一切都是由框架处理的。如果是客户端,则使用JQuery插件。

然后,您可以简单地将该dateTimePicker1.Value传递给存储过程参数。

这对你更容易。

0

你可以通过用户的jQuery日期选择器,而不是三个下拉..

  <html lang="en"> 
     <head> 
     <meta charset="utf-8" /> 
      <title>jQuery UI Datepicker - Default functionality</title> 
      <link rel="stylesheet"href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
      <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
      <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
      <link rel="stylesheet" href="/resources/demos/style.css" /> 
       <script> 
        $(function() { 
        $("#datepicker").datepicker(); 
        }); 
       </script> 
      </head> 
      <body> 
      <p>Date: <input type="text" id="datepicker" /></p> 
     </body> 
      </html> 
0

您可以如下使用下拉值: -

串_datetime = drpMonth.SelectedValue + drpDate.SelectedValue + drpYear.SelectedValue

Datetime _dof = Convert.ToDateTime(_datetime);

1

你这样做的方式你试图转换我们说010213这是你正试图转换的格式,它将获取String was not recognized as a valid DateTime.错误。使用-来区分月份和年份。

DateTime _dof = Convert.toDateTime(drpDate.SelectedValue +"-"+ drpMonth.SelectedValue +"-"+drpYear.SelectedValue); 

或使用此过载。

enter image description here

相关问题