C# 将ASP.net Web表单C中的两个dropdownlist绑定到一个数据库实体中

C# 将ASP.net Web表单C中的两个dropdownlist绑定到一个数据库实体中,c#,datetime,drop-down-menu,binding,webforms,C#,Datetime,Drop Down Menu,Binding,Webforms,我正在用ASP.NETWeb表单构建一个C应用程序,它有两个下拉列表。一个列表用于选择小时,另一个列表用于选择分钟。一旦两个dropdownlist都被选中,我想把它们放在一起显示为一个时间单位。例如,如果有人选择9作为dropdownlist1的小时,选择25作为dropdownlist2的分钟,这两个选择将作为一个时间单位9:25存储在数据库中,并可以从数据库中选择9:25 我知道晚了一个星期,但由于你的问题没有引起任何注意,所以 我假设您已经填充了dropdownlist控件,让我们开始获

我正在用ASP.NETWeb表单构建一个C应用程序,它有两个下拉列表。一个列表用于选择小时,另一个列表用于选择分钟。一旦两个dropdownlist都被选中,我想把它们放在一起显示为一个时间单位。例如,如果有人选择9作为dropdownlist1的小时,选择25作为dropdownlist2的分钟,这两个选择将作为一个时间单位9:25存储在数据库中,并可以从数据库中选择9:25

我知道晚了一个星期,但由于你的问题没有引起任何注意,所以

我假设您已经填充了dropdownlist控件,让我们开始获取它们的选定项值

string hour = dropdownlist1.SelectedItem.Text;
string minute = dropdownlist2.SelectedItem.Text;
现在这些小时和分钟字符串可能是9和25。由于我们讨论的情况是获取并保存一个时间间隔,因此最好先将其解析为,这正是.NET Framework中的目的

TimeSpan ts = TimeSpan.Parse(string.Format("{0}:{1}", hour, minute), 
                             CultureInfo.InvariantCulture);
通过此操作,我们将有一个9小时25分钟的时间跨度。在调试器中它似乎是{09:25:00}

如果您使用SQL Server,则它有一个CLR数据类型中带有TimeSpan的。您可以直接将此类数据插入到列中

using(var con = new SqlConnection(conString))
using(var cmd = con.CreateCommand())
{
     cmd.CommandText = "insert into MyTable(myColumn) VALUES (@myValue)";
     cmd.Parameters.Add("@myValue", SqlDbType.Time).Value = ts;
     con.Open();
     cmd.ExecuteNonQuery();
}
现在,在您的表中有一个范围为00:00:00.0000000到23:59:59.999999的值。当您从数据库中以时间跨度的形式获取此值时,可以将其格式化为9:25的文本表示形式

string s = ts.ToString("h\\:mm"); // s will be 9:25
但请记住,是.NET4版本带来的。如果您使用较低版本,您可以检查此问题