Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net页面加载中调用选定的索引更改事件_C#_Sql_Asp.net - Fatal编程技术网

C# 如何在asp.net页面加载中调用选定的索引更改事件

C# 如何在asp.net页面加载中调用选定的索引更改事件,c#,sql,asp.net,C#,Sql,Asp.net,我有一个asp日历视图,在该视图中,我正在对日历日期的选定索引生成动态控制。因此,我面临一个回发问题,因为动态控件在单击后会分散,所以我需要将此选定的索引更改事件调用到页面加载中,以便动态控件保持其状态 protected void Calendar1_SelectionChanged1(object sender, EventArgs e) { try { DateTime sDate = new DateTime(); sDate = Cale

我有一个asp日历视图,在该视图中,我正在对日历日期的选定索引生成动态控制。因此,我面临一个回发问题,因为动态控件在单击后会分散,所以我需要将此选定的索引更改事件调用到页面加载中,以便动态控件保持其状态

protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
{
    try
    {
        DateTime sDate = new DateTime();
        sDate = Calendar1.SelectedDate;
        sDay = sDate.ToString("MM/dd/yyyy");
        string doc = ddlDoctor.SelectedValue.ToString();
        DataTable dt = tsbll.GetAvailableSlotsbyDocAndDate(doc, sDay);

        foreach (DataRow dr in dt.Rows)
        {
            Button label = new Button();
            label.Text = dr["SlotTime"].ToString();
            //label.Style["Left"] = "20px";
            label.CssClass = "btn btn-primary";
            //label.CssClass = "background - color: #19bc49;";
            label.Click += new EventHandler(labelClick);
            pnlLabel.Controls.Add(label);

        }
    }
    catch (Exception ex) { throw new Exception(ex.ToString()); }
} 

您不必调用
页面加载
中的
SelectedIndexChanged
事件处理程序。您必须调用生成动态控件的方法。可以从
Page\u Load
和事件处理程序调用此方法

protected void GenerateDocSlotLabels(string doc, DateTime day)
{
    string sDay = day.ToShortDateString();
    DataTable dt = tsbll.GetAvailableSlotsbyDocAndDate(doc, sDay);

    foreach (DataRow dr in dt.Rows)
    {
        Button label = new Button();
        label.Text = dr["SlotTime"].ToString();
        //label.Style["Left"] = "20px";
        label.CssClass = "btn btn-primary";
        //label.CssClass = "background - color: #19bc49;";
        label.Click += new EventHandler(labelClick);
        pnlLabel.Controls.Add(label);
    }
} 
现在从两个事件处理程序调用此函数。例如:

protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
{
    DateTime sDate = Calendar1.SelectedDate;
    string doc = ddlDoctor.SelectedValue.ToString();
    GenerateDocSlotLabels(doc, sDate);
} 


旁注:我已经删除了你的
捕获
,因为它没有任何用处。应使用
throw
not
throw ex
重新引发异常,以保留原始堆栈跟踪。

如果在异常处理程序中无事可做,则不要捕获异常。与您的问题无关,但处理异常的方式毫无意义。如果您没有向异常对象添加任何新内容,那么甚至不用重新抛出它。您不必调用
页面加载中的
SelectedIndexChanged
事件处理程序。您必须调用生成动态控件的方法。此方法可以从
Page\u Load
和事件处理程序中调用。正如Tim所说,将此功能移动到一个单独的方法中,以便Page\u Load和selectedindexchanged事件处理程序都可以重新使用它。然后从这两个地方可以调用同一段代码。这是一个相当基本的代码重用原则。实际上我还没有完成我的代码,我稍后会传递异常消息。谢谢,谢谢,我只是想得不好。这里我面临的问题是,我正在使用一个动态按钮,它是在点击asp日历日期时生成的,我想在动态控件的点击事件上编写代码,但现在当我点击按钮时,按钮消失了。请帮助…@KhaleelR:您是否使用了我上次编辑之前使用的
Page\u Load
代码(带有
是(!IsPostBack)
)?@KhaleelR:嗯,目前您甚至不需要
Calendar1\u SelectionChanged1
事件处理程序,因为代码已经在
Page\u Load
中执行。我改变了它,现在的问题是我需要双击日历来显示动态控件。
protected void Page_Load(object sender, EventArgs e)
{
   DateTime sDate = Calendar1.SelectedDate;
   string doc = ddlDoctor.SelectedValue.ToString();
   GenerateDocSlotLabels(doc, sDate);
}