C# 根据条件禁用按钮
我有24个按钮,上面写着时间,24小时C# 根据条件禁用按钮,c#,asp.net,webforms,C#,Asp.net,Webforms,我有24个按钮,上面写着时间,24小时 button1.Text="01:00" button2.Text="02:00" button3.Text="03:00" ... button24.Text="00:00" 我有一个显示今天日期的标签 DateTime todayDate = DateTime.Now; lblTodayDate.Text = todayDate.ToString("dd/MM/yyyy"); 每当用户单击这24个按钮中的任何一个,用户都会注册预约。例如,如果用户单
button1.Text="01:00"
button2.Text="02:00"
button3.Text="03:00"
...
button24.Text="00:00"
我有一个显示今天日期的标签
DateTime todayDate = DateTime.Now;
lblTodayDate.Text = todayDate.ToString("dd/MM/yyyy");
每当用户单击这24个按钮中的任何一个,用户都会注册预约。例如,如果用户单击按钮3.Text=“03:00”,则表示用户预约了(今天3:00),此记录将保存在数据库MS-SQL中。当其他用户访问此页面时,此按钮不应启用,因为今天有一个人已经预约了,但明天必须再次启用,直到有一个用户单击此按钮
在PageLoad中,我想创建一个方法,该方法将进入数据库并检查是否存在具有相同日期和时间的约会。如果是,则不应启用按钮。Else按钮已启用
protected void CheckIfOrderAvailable()
{
SqlConnection con = new SqlConnection();
string cs = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
con.ConnectionString = cs;
con.Open();
SqlCommand cmd = new SqlCommand();
var buttons = new Button[] { button1, button2...button24 };
foreach (var btn in buttons)
cmd.CommandText = "select * from clientOrder where TodayDateToCompare='" + lblTodayDate.Text + " and service_time='" + btn.Text + "'";
cmd.Connection = con;
SqlDataReader rd1 = cmd.ExecuteReader();
if (rd1.HasRows)
{
foreach (var btn in buttons)
{
btn.Enabled = false;
btn.BackColor = System.Drawing.Color.Red;
}
con.Close();
}
}
如果有人能帮助解决这个问题,我将不胜感激。首先,您没有提供表结构,我们不知道您是否使用实体框架,因此我的答案主要是psudo代码 既然您正在数据库中保存约会,那么您应该做的是 1-在webform页面加载事件中,您应该从te数据库中获取约会 2-使用类似的方式获取窗体上的所有控件
List<Button> buttonsList = new List<Button>();
foreach (var control in Controls)
{
if (control is Button bt)
{
. buttonsList.Add(bt);
}
}
希望这有帮助 您应该使用ajax请求。页面加载事件清除。aspx页面每5分钟插入一次ajax请求
Ajax请求在今天获得约会,如果使用小时,则jquery选择器选择按钮元素并禁用循环不正确
foreach (var btn in buttons)
cmd.CommandText = "select * from clientOrder where TodayDateToCompare='" + lblTodayDate.Text + " and service_time='" + btn.Text + "'";
cmd.Connection = con;
SqlDataReader rd1 = cmd.ExecuteReader();
if (rd1.HasRows)
{
foreach (var btn in buttons)
{
btn.Enabled = false;
btn.BackColor = System.Drawing.Color.Red;
}
con.Close();
}
如果我理解正确,应该如下所示:
foreach (var btn in buttons)
{
cmd.CommandText = "select * from clientOrder where TodayDateToCompare='" + lblTodayDate.Text + " and service_time='" + btn.Text + "'";
cmd.Connection = con;
SqlDataReader rd1 = cmd.ExecuteReader();
if (rd1.HasRows)
{
btn.Enabled = false;
btn.BackColor = System.Drawing.Color.Red;
}
}
con.close();
另外,它应该使用“using”来确保con关闭。
我想创建一个方法,该方法将进入数据库…
到目前为止,您尝试了什么来解决这个问题?
foreach (var btn in buttons)
{
cmd.CommandText = "select * from clientOrder where TodayDateToCompare='" + lblTodayDate.Text + " and service_time='" + btn.Text + "'";
cmd.Connection = con;
SqlDataReader rd1 = cmd.ExecuteReader();
if (rd1.HasRows)
{
btn.Enabled = false;
btn.BackColor = System.Drawing.Color.Red;
}
}
con.close();