事件错误:引用Event Constructor

时间:2014-09-28 19:55:31

标签: c# asp.net

我正在尝试通过在代码中输入事件来使日历正常工作。我对ASP.NET仍然缺乏经验,所以我不确定如何解决这个问题。我一直得到的错误是:“Event”不包含带有7个参数的构造函数。

protected void Page_Load(object sender, EventArgs e)
{

    DateTime d1;

    anEvent[0] = new Event("Event1", "Event one", "08/01/2014", "20.00", "Connie", "222-222-2222", "connie@gmail.com");

    anEvent[1] = new Event("Event2", "Event two", "08/15/2014", "80.00", "Cathryn", "555-555-5555", "cathryn@gmail.com");

    anEvent[2] = new Event("Event3", "Event three", "09/05/2014", "50.00", "Charles", "888-888-8888", "charles@gmail.com");

    foreach (Event myEvent in anEvent)
    {

        String anEventDate;

        anEventDate = myEvent.EventDate;

        d1 = Convert.ToDateTime(anEventDate);

        Calendar2.SelectedDates.Add(d1);

    }
}







 using System;

 using System.Collections.Generic;

 using System.Linq;

 using System.Web;

 using System.Web.UI;

 using System.Web.UI.WebControls;

 using System.Configuration;

 using System.Data.SqlClient;

 using System.Data;





 public partial class CurrentEvents : System.Web.UI.Page
 {

Event[] anEvent = new Event[3];

protected void Page_Load(object sender, EventArgs e)
{

    DateTime d1;

    anEvent[0] = new Event("Event1", "Event one", "08/01/2014", "20.00", "Connie", "222-222-2222", "connie@gmail.com");

    anEvent[1] = new Event("Event2", "Event two", "08/15/2014", "80.00", "Cathryn", "555-555-5555", "cathryn@gmail.com");

    anEvent[2] = new Event("Event3", "Event three", "09/05/2014", "50.00", "Charles", "888-888-8888", "charles@gmail.com");



    foreach (Event myEvent in anEvent)
    {

        String anEventDate;



        anEventDate = myEvent.EventDate;

        d1 = Convert.ToDateTime(anEventDate);

        Calendar2.SelectedDates.Add(d1);

    }



}



protected void Calendar2_DayRender(object sender, DayRenderEventArgs e)
{

    String todayDate = DateTime.Today.ToString("MM/dd/yyyy"); ;

    String calendarDate;

    for (int i = 0; i < Calendar2.SelectedDates.Count; i++)
    {



        calendarDate = Calendar2.SelectedDates[i].ToString("MM/dd/yyyy");

        if (e.Day.Date.CompareTo(Calendar2.SelectedDates[i]) == 0)
        {

            if (calendarDate.CompareTo(todayDate) < 0)
            {

                e.Cell.BackColor = System.Drawing.Color.Red;



            }

            else

                if (calendarDate.CompareTo(todayDate) > 0)
                {

                    e.Cell.BackColor = System.Drawing.Color.Blue;



                }

                else

                    if (calendarDate.CompareTo(todayDate) == 0)
                    {

                        e.Cell.BackColor = System.Drawing.Color.Green;

                    }

                    else
                    {

                        e.Cell.BackColor = System.Drawing.Color.LightGray;

                    }

        }

    }

}



protected void Calendar2_SelectionChanged(object sender, EventArgs e)
{

    String selectedDate;

    int foundDate = 0;



    selectedDate = Calendar2.SelectedDate.ToString("MM/dd/yyyy");



    foreach (Event myEvent in anEvent)
    {

        if (selectedDate.Equals(myEvent.EventDate))
        {

            this.ControlNewEventControl.updateControl(sender, e, myEvent.EventName, myEvent.EventDescription, myEvent.EventDate, myEvent.EventFee, myEvent.ECordNm, myEvent.ECordNum, myEvent.ECordEml);

            ErrorLabel.Text = "";

            foundDate = 1;

        }



    }

    if (foundDate == 0)
    {

        this.ControlNewEventControl.updateControl(sender, e, "", "", "", "", "", "", "");

        ErrorLabel.Text = "* There is no Event Scheduled for that Date.<br />&nbsp;&nbsp;&nbsp;&nbsp;Please Choose Another Date.";

    }



    Page_Load(sender, e);

}



   /* SqlConnection dbConnection = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database2.mdf;Integrated Security=True");

    DateTime Date;



    try
    {

        dbConnection.Open();

        string SQLselectQuery = "SELECT EventDate FROM Event";

        using (SqlCommand selectCommand = new SqlCommand(SQLselectQuery, dbConnection))
        {

            SqlDataReader reader = selectCommand.ExecuteReader();

            while (reader.Read())
            {

                Date = reader.GetDateTime(0);

                Calendar2.SelectedDates.Add(Date);

            }

        }

    }

    catch (SqlException exception)
    {

        Response.Write("<p>Error code " + exception.Number + ": " + exception.Message + "</p>");

    }

    finally
    {

        dbConnection.Close();

    }

}



protected void Calendar2_DayRender(object sender, DayRenderEventArgs e)
{

    String todayDate = DateTime.Today.ToString("MM/dd/yyyy"); ;

    String calendarDate;

    for (int i = 0; i < Calendar2.SelectedDates.Count; i++)
    {



        calendarDate = Calendar2.SelectedDates[i].ToString("MM/dd/yyyy");

        if (e.Day.Date.CompareTo(Calendar2.SelectedDates[i]) == 0)
        {

            if (calendarDate.CompareTo(todayDate) < 0)
            {

                e.Cell.BackColor = System.Drawing.Color.Red;

            }

            else if (calendarDate.CompareTo(todayDate) > 0)
            {

                e.Cell.BackColor = System.Drawing.Color.Blue;

            }

            else if (calendarDate.CompareTo(todayDate) == 0)
            {

                e.Cell.BackColor = System.Drawing.Color.Green;

            }

            else
            {

                e.Cell.BackColor = System.Drawing.Color.Fuchsia;

            }

        }

    }

}



protected void Calendar2_SelectionChanged(object sender, EventArgs e)
{

    SqlConnection dbConnection = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database2.mdf;Integrated Security=True");



    try
    {

        int count = 0;

        dbConnection.Open();

        string SQLselectQuery = "SELECT * FROM Event WHERE EventDate = @EventDate";

        SqlCommand selectCommand = new SqlCommand(SQLselectQuery, dbConnection);

        selectCommand.Parameters.AddWithValue("@EventDate", Calendar2.SelectedDate.ToString());

        using (selectCommand)
        {

            SqlDataReader reader = selectCommand.ExecuteReader();

            while (reader.Read())
            {

                count++;

                Ename.Text = reader.GetString(1).ToString();

                Escript.Text = reader.GetString(2).ToString();

                EDate.Text = reader.GetDateTime(3).ToString();

                EvFee.Text = reader.GetDecimal(4).ToString();

                ECordNm.Text = reader.GetString(5).ToString();

                ECordNum.Text = reader.GetString(6).ToString();

                ECordEml.Text = reader.GetString(7).ToString();

            }

        }

        if (count == 0)
        {

            Ename.Text = "";

            Escript.Text = "There is no Event for this Date";

            EDate.Text = Calendar2.SelectedDate.ToString();

            EvFee.Text = "";

            ECordNm.Text = "";

            ECordNum.Text = "";

            ECordEml.Text = "";

        }

    }

    catch (SqlException exception)
    {

        Response.Write("<p>Error code " + exception.Number + ": " + exception.Message + "</p>");

    }

    finally
    {

        dbConnection.Close();

        Page_Load(sender, e);

    }

} */

protected void Ename_TextChanged(object sender, EventArgs e)
{

}
}

1 个答案:

答案 0 :(得分:0)

您发布的代码似乎不完整 - 某处必须有类Event的定义,否则您将无法获得您所看到的错误。

错误消息本身很明显 - 类Event没有带7个参数的构造函数。从您发布的代码中推断出来,我希望在您的项目(或其他引用的项目)中的某个地方有一个类,它可能看起来像这样:

public class Event
{

    public string EventID { get; set; }

    public string EventName { get; set; }

    public string EventDate { get; set; }

    public string EventFee { get; set; }

    public string EventCoordinator { get; set; }

    public string EventCoordinatorSSN { get; set; }

    public string EventCoordinatorEmail { get; set; }
}

这只是一个猜测 - 例如,它可以设置私有字段(即private string eventDate等)而不是属性。这里重要的一点是你有一个带有字段/属性的类,但它只有一个默认的(无参数)构造函数。

因此,当您尝试执行以下操作:new Event("Event1", "Event one", "08/01/2014", "20.00", "Connie", "222-222-2222", "connie@gmail.com")时,编译器会在Event类中查找接受7个字符串参数的构造函数,但它无法找到一个(因此,误差)。

有几种方法可以解决这个问题,具体取决于类的实际设计方式。您可以添加一个带有7个字符串参数的构造函数,并将它们分配给7个字段,如下所示:

public Event(string ID, string name, string date, string fee, string coordinator, string ssn, string email)
{

    eventID = ID;
    eventName = name;
    eventDate = date;
    eventFee = fee;
    eventCoordinator = coordinator;
    eventCoordinatorSSN = ssn;
    eventCoordinatorEmail = email;
}

这会将7个参数分配给7个相应的字段。

另一种选择是使用自动属性和对象初始化。这将允许您通过自动属性初始化字段(请参阅我在此答案中最初发布的代码),并且看起来像这样:

anEvent[0] = new Event() {
                 EventID = "Event1",
                 EventName = "Event one",
                 EventDate = "08/01/2014",
                 EventFee = "20.00",
                 EventCoordinator = "Connie",
                 EventCoordinatorSSN = "222-22-2222",
                 EventCoordintaorEmail = "connie@gmail.com"
};

这将创建Event类的新实例,并通过属性将提供的值分配给字段。

此处还有一些其他问题(比如使用string代替所有内容,而不是DateTime代表日期,decimal代表货币等,但因为这是一个类项目教师可能还没有达到这一点,所以我们可以坚持使用string

如果没有看到Event课程的代码,我们无法为您提供更详细的帮助,但希望这个答案可以为您提供有关正在发生的事情以及在哪里寻找的一些建议。