上次提出的问题,其中还是遇到很多问题,小弟现在把问题说全,请各位帮忙,感激
问题如下:
在新增时
输入一个开始时间,一个结束时间,得到这个时间段所有的天数比如:2010-05-10~2010-11-11这个时间段的天数,然后月份显示出来,其中每一个日期还要对应每一周的星期,大致如下图描述:
,在开始日期前的天数不用显示,在结束日期后的日期不用显示,进行新增操作时,如果没有选中一个日期,则提示至少选中一个日期,然后将选中的日期插入数据库,
更新时,从数据库里读出日期信息,并如图所示,把对应日期勾选上,修改后,提交更新,更新数据库,问题大致如下了,谢谢大家帮忙,求具体实例代码,3Q

解决方案 »

  1.   

    <asp:GridView ID="gdvAdd" Width="100%" runat="server" AutoGenerateColumns="False"
                                        OnRowDataBound="gdvAdd_RowDataBound" OnRowCommand="gdvAdd_RowCommand" >
                                        <Columns>
                                            <asp:TemplateField HeaderText="星期日" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button1" runat="server" Width=100px CausesValidation="false" CommandName="Sunday"
                                                        Text='<%# Eval("Sunday") %>' CommandArgument='<%# Eval("Sunday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期一" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button2" runat="server" Width=100px CausesValidation="false" CommandName="Monday"
                                                        Text='<%#Eval("Monday")%>' CommandArgument='<%# Eval("Monday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期二" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button3" runat="server" Width=100px CausesValidation="false" CommandName="Tuesday"
                                                        Text='<%# Eval("Tuesday") %>' CommandArgument='<%# Eval("Tuesday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期三" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button4" runat="server" Width=100px CausesValidation="false" CommandName="Wednesday"
                                                        Text='<%# Eval("Wednesday") %>' CommandArgument='<%# Eval("Wednesday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期四" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button5" runat="server" Width=100px CausesValidation="false" CommandName="Thursday"
                                                        Text='<%# Eval("Thursday") %>' CommandArgument='<%# Eval("Thursday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期五" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button6" runat="server" Width=100px CausesValidation="false" CommandName="Friday"
                                                        Text='<%# Eval("Friday") %>' CommandArgument='<%# Eval("Friday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="星期六" ShowHeader="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="Button7" runat="server" Width=100px CausesValidation="false" CommandName="Saturday"
                                                        Text='<%# Eval("Saturday") %>' CommandArgument='<%# Eval("Saturday") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                        </Columns>
                                    </asp:GridView>
      

  2.   

    if (!IsPostBack)
            {           
                
                string Mast_ID = Request[RequestKey.nowEdit];
                m_MasterTable = m_bllMasterTable.GetModel(Convert.ToInt64(Mast_ID));
                string Mast_StartDate = m_MasterTable.Mast_StartDate.ToString();
                string Mast_EndDate = m_MasterTable.Mast_EndDate.ToString();            DateTime dtime =DateTime.Parse( m_MasterTable.Mast_StartDate.ToString());
                Label2.Text = dtime.ToLongDateString();
                ViewState["Table_Date"] = dtime;            dataBind(sender, e);
                DateTime s1 = DateTime.Parse(Mast_StartDate);
                DateTime s2 = DateTime.Parse(Mast_EndDate);            int count = int.Parse(ClsSchedulingSet.DateTimeManger.DateDiff(Business.Scheduling.ClsSchedulingSet.DateInterval.Day, s1, s2).ToString());                       DataTable dt = new DataTable();
                dt.Columns.Add("Sunday");
                dt.Columns.Add("Monday");
                dt.Columns.Add("Tuesday");
                dt.Columns.Add("Wednesday");
                dt.Columns.Add("Thursday");
                dt.Columns.Add("Friday");
                dt.Columns.Add("Saturday");
                DataRow dr = dt.NewRow();
                for (int i = 0; i < count + 1; i++)
                {
                    switch (s1.AddDays(i).DayOfWeek)
                    {
                        case DayOfWeek.Sunday:
                            dr["Sunday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Monday:
                            dr["Monday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Tuesday:
                            dr["Tuesday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Wednesday:
                            dr["Wednesday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Thursday:
                            dr["Thursday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Friday:
                            dr["Friday"] = s1.AddDays(i).ToLongDateString();
                            break;
                        case DayOfWeek.Saturday:
                            dr["Saturday"] = s1.AddDays(i).ToLongDateString();
                            dt.Rows.Add(dr);
                            dr = dt.NewRow();
                            break;
                    }
                    if (i == count && s1.AddDays(i).DayOfWeek != DayOfWeek.Saturday)
                    {
                        dt.Rows.Add(dr);
                        break;
                    }            }
                gdvAdd.DataSource = dt;
                gdvAdd.DataBind();        }
      

  3.   

    就相当于画时间控件,其实可以通过自己画的,选择完时间,然后画日期控件(拼HTML),input type='checkbox'
      

  4.   

        protected void gdvAdd_RowCommand(object sender, GridViewCommandEventArgs e)
        {        Button btn = e.CommandSource as Button;
            DateTime Table_Date = DateTime.Parse(btn.Text);
            ViewState["Table_Date"] = Table_Date;
            dataBind(sender, e);
            Label2.Text = Table_Date.ToLongDateString();
                }
        protected void gdvAdd_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            for (int i = 1; i <= 7; i++)
            {
                string t = "Button" + i.ToString();
                Button btn = e.Row.FindControl(t) as Button;
                if (btn != null)
                {
                    if (btn.Text == "")
                    {
                        btn.Visible = false;
                    }
                }
            }
        }
      

  5.   

    Count 长度 方法 网上找   /// <summary>
           /// 比较日期相差的天数
           /// </summary>
           public enum DateInterval
           {
               Second, Minute, Hour, Day, Week, Month, Quarter, Year
           }       public sealed class DateTimeManger
           {           public static long DateDiff(DateInterval Interval, System.DateTime StartDate, System.DateTime EndDate)
               {
                   long lngDateDiffValue = 0;
                   System.TimeSpan TS = new System.TimeSpan(EndDate.Ticks - StartDate.Ticks);
                   switch (Interval)
                   {
                       case DateInterval.Second:
                           lngDateDiffValue = (long)TS.TotalSeconds;
                           break;
                       case DateInterval.Minute:
                           lngDateDiffValue = (long)TS.TotalMinutes;
                           break;
                       case DateInterval.Hour:
                           lngDateDiffValue = (long)TS.TotalHours;
                           break;
                       case DateInterval.Day:
                           lngDateDiffValue = (long)TS.Days;
                           break;
                       case DateInterval.Week:
                           lngDateDiffValue = (long)(TS.Days / 7);
                           break;
                       case DateInterval.Month:
                           lngDateDiffValue = (long)(TS.Days / 30);
                           break;
                       case DateInterval.Quarter:
                           lngDateDiffValue = (long)((TS.Days / 30) / 3);
                           break;
                       case DateInterval.Year:
                           lngDateDiffValue = (long)(TS.Days / 365);
                           break;
                   }
                   return (lngDateDiffValue);
               }       }
      

  6.   

    多选 可以用ArrayList  插入判断是否为空就好了
    代码如下:protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
                          ArrayList arr =null;        if (ViewState["AttendanceDays"] != null)
            {
                arr = ViewState["AttendanceDays"] as ArrayList;
            }
            if (arr == null)
            {
                arr = new ArrayList();
            }
            Button btn = e.CommandSource as Button;
            
            if (btn != null)
            {
                string t = e.CommandArgument.ToString();
                if (arr.Contains(t))
                {
                    btn.BackColor = System.Drawing.Color.Empty;
                    arr.Remove(t);
                }
                else
                {
                    btn.BackColor = System.Drawing.Color.Red;
                    arr.Add(t);
                }
            }
            ViewState["AttendanceDays"] = arr;
        }
    插入时判断就好了
     if (ViewState["AttendanceDays"] != null)
            {
                arr = ViewState["AttendanceDays"] as ArrayList;
            }
            if (arr != null)
            {
                foreach (string t in arr)
                {
                
                }
            }
      

  7.   

    asp.net的calendar是可以扩展的。随便搜一下“asp.net dayrender”!