Как создать календарь фестиваля в ASP.net - PullRequest
0 голосов
/ 14 сентября 2011

Я хочу сделать календарь фестивалей, используя asp.net, из которого я использовал два ajax календаря и одно текстовое поле, это текстовое поле фестиваля, где мы вводим фестиваль, который соответственно FromDate и ToDate.Я хочу сделать это следующим образом

  1. Если я введу в текстовое поле Рождество и выберу Fromdate = 25/12/2011 и ToDate = 31/12/2011, тогда оно будет действительным

  2. Если я выберу из даты = 25/12/2011 и ToDate = 24/12/2011, то она будет недействительной

  3. Если я выберу Fromdate = 25/ 12/2011 и Todate = 28/12/2011, то также недействительным, поскольку он поступает в период с 25/12/2011 по 31/12/2011

  4. Если я выбираю fromdate =01.01.2011 и ToDate = 1/1/2011, тогда он действителен

  5. Если я выберу дату от = 21/12/2011 и 25/12/2011, то он недействителен, потому чтоуже Рождества, сделанного в 1/1/2011

И вся дата должна отображаться в виде сетки, как 25 декабря 2011 года

Вот мой код:

DateTime dt1 = Convert.ToDateTime(txt_fromdate.Text);
DateTime dt2 = Convert.ToDateTime(txt_todate.Text);
if (dt1 > dt2)
{
    con.Open();
    com = new SqlCommand("BTNN_MovieDB_Festival_Details_Insert", con);
    com.Parameters.Add("@fromdate", SqlDbType.VarChar).Value = dateformat_mmdd(txt_fromdate.Text.ToString().Trim());
    com.Parameters.Add("@todate", SqlDbType.VarChar).Value = dateformat_mmdd(txt_todate.Text.ToString().Trim());
    com.Parameters.Add("@return", SqlDbType.VarChar).Direction = ParameterDirection.ReturnValue;
    com.ExecuteNonQuery();
    con.Close();
    showdata();
}
else if (dt1 < dt2)
{
    lblerror.Text = "ToDate should be greater than FromDate";

}

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Этот код должен функционировать

     static void Main(string[] args)
    {
        // allFestivals holds all the festival list 
        // allFestivals values may come from some other data source like database
        List<Festival> allFestivals =new List<Festival>();

        // Simulate by inserting Christmas 
        Festival chirstmas = new Festival() 
        { 
            Name = "Christmas", 
            startDate = new DateTime(2011, 12, 25), 
            endDate = new DateTime(2011, 12, 31) 
        };
        AddFestival(allFestivals, chirstmas);

        // NewYear will not be inserted since 31-12-2011 is already 
        // marked as holiday by Christmas
        AddFestival(allFestivals, new Festival()
        {
            Name = "NewYear",
            startDate = new DateTime(2011, 12, 31),
            endDate = new DateTime(2012, 1, 01)
        });
        Console.ReadLine();
    }

    /// <summary>
    /// Add new festival to the list of festivals
    /// </summary>
    /// <param name="allFestivals"></param>
    /// <param name="newFestival"></param>
    static void AddFestival(List<Festival> allFestivals, Festival newFestival)
    {
        // If newFestival meets all the criteria only then add to the list
        if (ValidDates(newFestival) &&
            !NameExists(allFestivals, newFestival) &&
            !NonHoliday(allFestivals, newFestival) )
        {
            // allFestivals values may be strored into database
            allFestivals.Add(newFestival);
        }
    }

    /// <summary>
    /// Check if the newFestival startDate or endDate falls within any of the already
    /// existing festival start and end date
    /// </summary>
    /// <param name="dates"></param>
    /// <param name="newFestival"></param>
    /// <returns></returns>
    private static bool NonHoliday(List<Festival> dates, Festival newFestival)
    {
        return dates.Exists((date) => 
            newFestival.startDate >= date.startDate && newFestival.startDate <= date.endDate ||
            newFestival.endDate >= date.startDate && newFestival.endDate <= date.endDate);
    }

    /// <summary>
    /// If the festival name already exists, returns true else false
    /// </summary>
    /// <param name="dates"></param>
    /// <param name="newFestival"></param>
    /// <returns></returns>
    private static bool NameExists(List<Festival> dates, Festival newFestival)
    {
        return dates != null && 
            dates.Count() > 0  && 
            dates.FirstOrDefault((dt) => dt.Name == newFestival.Name) != null;
    }

    /// <summary>
    /// Validate if end date is greater than or equal to start date
    /// </summary>
    /// <param name="newFestival"></param>
    /// <returns></returns>
    private static bool ValidDates(Festival newFestival)
    {
        return newFestival.endDate >= newFestival.startDate;
    }

    // Data structure represenging festival details
    class Festival
    {
        public DateTime startDate { get; set; }
        public DateTime endDate { get; set; }
        public string Name { get; set; }
    }
0 голосов
/ 13 сентября 2011

Это не полный синтаксис, но он должен помочь вам понять, что вам нужно сделать:

DateTime d1 = txtDate1.Text;
DateTime d2 = txtDate2.Text;

if (d1 < d2){
   //Invalid
}

SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Table WHERE ([FromDate]<@Date1 AND [ToDate]>@Date1) OR (([FromDate]<@Date2 AND [ToDate]>@Date2)", conn);

//TODO: Add Parameters

if (((int)cmd.executescalar())>0){
    //Invalid
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...