C# 根据条件禁用按钮

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个按钮中的任何一个,用户都会注册预约。例如,如果用户单

我有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个按钮中的任何一个,用户都会注册预约。例如,如果用户单击按钮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();