高分请教如图表格画法

llsen 2009-06-15 02:37:31
问题:如何实现如下表格?
应该是一个改写的日期控件,只不过每个日期下面有块自定义的区域,显示我从数据看中检索出来的数据?
如何实现?!

图如下
...全文
801 101 打赏 收藏 转发到动态 举报
写回复
用AI写文章
101 条回复
切换为时间正序
请发表友善的回复…
发表回复
lugsbbs 2009-06-17
  • 打赏
  • 举报
回复
不懂噢,帮顶!
llsen 2009-06-17
  • 打赏
  • 举报
回复
结贴
llsen 2009-06-17
  • 打赏
  • 举报
回复
上次总积分6666,觉得是个很好的数字
这次又碰到8888,哈哈,以后不回帖了,保持这个数字,,,

llsen 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 97 楼 Jonly 的回复:]
不管用什么方法,最后还是要一个格子一个格子填,如何能使客户端访问最快就是硬道理
[/Quote]
up
Jonly 2009-06-17
  • 打赏
  • 举报
回复
不管用什么方法,最后还是要一个格子一个格子填,如何能使客户端访问最快就是硬道理
llsen 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 95 楼 netna 的回复:]
看了好久,这个东西有点用,帮顶.
[/Quote]

谢谢,接着顶
netna 2009-06-17
  • 打赏
  • 举报
回复
看了好久,这个东西有点用,帮顶.
llsen 2009-06-17
  • 打赏
  • 举报
回复
接着顶,一会不顶就沉了,,
llsen 2009-06-16
  • 打赏
  • 举报
回复
现在用模拟数据出来的表格这个样子
但是是一格格填充的,不知有没有更好的方法
Dream_Hunter_ 2009-06-16
  • 打赏
  • 举报
回复
学习!帮顶!
llsen 2009-06-16
  • 打赏
  • 举报
回复
给人生如梦留言,也不见他现身,
llsen 2009-06-16
  • 打赏
  • 举报
回复
顶起来,怎么跑后面去了
yjl49 2009-06-16
  • 打赏
  • 举报
回复
留个标签学习。
llsen 2009-06-16
  • 打赏
  • 举报
回复
aa
llsen 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 hhhh63 的回复:]
下面是代码,我这个比较复杂,要考虑时区,上下午,星期六和日要合到一起,有必要的话,我可以给你写一个。

private void SetCalendar()
{
DateTime dt = SelectMonth.AddDays( 1 - SelectMonth.Day );
int n = (int)dt.DayOfWeek;
if( ++n > 6 ) n = 0;
dt = dt.AddDays( -n );
DateTime bdt = dt.Date;
DateTime edt = bdt;
do{ edt = edt.AddDays( 7 ); }
while( edt.Month == SelectMonth.Month );

[/Quote]

谢谢楼上的,
hhhh63 2009-06-16
  • 打赏
  • 举报
回复
下面是代码,我这个比较复杂,要考虑时区,上下午,星期六和日要合到一起,有必要的话,我可以给你写一个。

private void SetCalendar()
{
DateTime dt = SelectMonth.AddDays( 1 - SelectMonth.Day );
int n = (int)dt.DayOfWeek;
if( ++n > 6 ) n = 0;
dt = dt.AddDays( -n );
DateTime bdt = dt.Date;
DateTime edt = bdt;
do{ edt = edt.AddDays( 7 ); }
while( edt.Month == SelectMonth.Month );
bdt = bdt.AddHours( -tz ); //?? 是否按选定的时间筛选
edt = edt.AddHours( -tz );

dtable = GetDayTable( bdt.ToString("g"), edt.ToString("g"), sel1.SelectedValue, int.Parse(Dropdownlist1.SelectedValue) );

strCalendar = "";
do
{
strCalendar += "<tr align=\"center\" bgcolor=#E3ECF5 style=\"font-size:11px; font-weight:bold\">" +
"<td height=24 bgcolor=#AEC4DA ></td>";
addSunday( dt );
for( int i = 2; i < 7; i++ )
{
addOtherday( dt.AddDays(i) );
}
strCalendar += "</tr>";
addAMtitle( dt );
strCalendar += "<tr>";
addSunData( dt );
for( int i = 2; i < 7; i++ )
{
addOtherDataAM( dt.AddDays(i) );
}
strCalendar += "</tr>";
addPMtitle( dt );
strCalendar += "<tr>";
addSunData( dt.AddDays(1) );
for( int i = 2; i < 7; i++ )
{
addOtherDataPM( dt.AddDays(i) );
}
dt = dt.AddDays(7);
strCalendar += "</tr>";
}while( dt.Month == SelectMonth.Month );
}

private void addAMtitle( DateTime dt )
{
strCalendar += string.Format( "<tr bgcolor=#97B3CE>" +
"<td rowspan=4 align=center valign=top bgcolor=#C9DBEC style=padding-top:5px;>" +
"<A href=\"javascript:SelectWeek('{0}')\"><img src=../img/calendar-1.gif width=21 border=0></A></td>" +
"<td align=center height=16 style=\"color:#FFFFFF; font-weight:bold;\">{1}</td>" +
"<td colspan=5 bgcolor=#97B3CE style=\"padding-left:30px; color:#FFFFFF; font-weight:bold;\">Morning Events</td></tr>",
dt.ToString( "D", DateTimeFormatInfo.InvariantInfo ),
dt.ToString("MMM d", DateTimeFormatInfo.InvariantInfo) );
}

private void addPMtitle( DateTime dt )
{
strCalendar += string.Format( "<tr bgcolor=#97B3CE>" +
"<td align=center height=16 style=\"color:#FFFFFF; font-weight:bold;\">{0}</td>" +
"<td colspan=5 bgcolor=#97B3CE style=\"padding-left:30px; color:#FFFFFF; font-weight:bold;\">Afternoon Events</td></tr>",
dt.AddDays(1).ToString("MMM d", DateTimeFormatInfo.InvariantInfo) );
}

private void addSunData( DateTime dt )
{
// if( Session["TimeZone"] != null )
// sel2.SelectedIndex = (int)Session["TimeZone"];
// else
// sel2.SelectedIndex = 13 - int.Parse( DateTime.Today.ToString( "zz" ) );

int nrow = 0;
strCalendar += "<td vAlign=top bgcolor=#FFFFFF style=\"border-right:dashed 1px #D1D2D3; padding-left:5px;\">";
for( ; nrow < dtable.Rows.Count; nrow++)
{
DateTime dd = ((DateTime)dtable.Rows[nrow]["ActiveDateTime"]);
dd = dd.AddHours(tz);
if( dd.Date == dt.Date )
{
strCalendar += string.Format( "<A href=calendar_dashboard.aspx?ItemID={3}&Curency={4}>{0} {1} {2}</A><br>",
dd.ToString( "HH:mm" ),
dtable.Rows[nrow]["Country"],
dtable.Rows[nrow]["ShortTitle"],
dtable.Rows[nrow]["Item_ID"],
sel1.SelectedValue);
}
}
strCalendar += " </td>";
}

private void addOtherDataAM( DateTime dt )
{
int nrow = 0;
strCalendar += "<td vAlign=top bgcolor=#FFFFFF style=\"border-right:dashed 1px #D1D2D3; padding-left:5px;\">";
for( ; nrow < dtable.Rows.Count; nrow++)
{
DateTime dd = ((DateTime)dtable.Rows[nrow]["ActiveDateTime"]);
dd = dd.AddHours(tz);
if( dd.Date == dt.Date && dd.Hour < 12 )
{
strCalendar += string.Format( "<A href=calendar_dashboard.aspx?ItemID={3}&Curency={4}>{0} {1} {2}</A><br>",
dd.ToString( "HH:mm" ),
dtable.Rows[nrow]["Country"],
dtable.Rows[nrow]["ShortTitle"],
dtable.Rows[nrow]["Item_ID"],
sel1.SelectedValue);
}
}
strCalendar += " </td>";
}

private void addOtherDataPM( DateTime dt )
{
int nrow = 0;
strCalendar += "<td vAlign=top bgcolor=#FFFFFF style=\"border-right:dashed 1px #D1D2D3; padding-left:5px;\">";
for( ; nrow < dtable.Rows.Count; nrow++)
{
DateTime dd = ((DateTime)dtable.Rows[nrow]["ActiveDateTime"]);
dd = dd.AddHours(tz);
if( dd.Date == dt.Date && dd.Hour >= 12 )
{
strCalendar += string.Format( "<A href=calendar_dashboard.aspx?ItemID={3}&Curency={4}>{0} {1} {2}</A><br>",
dd.ToString( "HH:mm" ),
dtable.Rows[nrow]["Country"],
dtable.Rows[nrow]["ShortTitle"],
dtable.Rows[nrow]["Item_ID"],
sel1.SelectedValue);
}
}
strCalendar += " </td>";
}

private void addOtherday( DateTime dt )
{
strCalendar += string.Format( "<td><A href=\"javascript:SelectDay('{0}')\">{1}</A></td>",
dt.ToString( "D", DateTimeFormatInfo.InvariantInfo ),
dt.ToString("MMM d", DateTimeFormatInfo.InvariantInfo) );
}

private void addSunday( DateTime dt )
{
strCalendar += string.Format( "<td><A href=\"javascript:SelectDay('{0}')\">{1}/{2}</A></td>",
dt.ToString( "D", DateTimeFormatInfo.InvariantInfo ),
dt.ToString("MMM d", DateTimeFormatInfo.InvariantInfo),
dt.AddDays(1).Day );
}

private void SetDetalledListing()
{
DateTime SelectDate;

if( this.txtSelectDay.Value == "" )
SelectDate = SelectMonth.Date.AddHours( tz );
else
{
SelectDate = Convert.ToDateTime( this.txtSelectDay.Value );
this.txtEventDetail.Value = "true";
}

DateTime dat1 = SelectDate.Date;

this.Label2.Text = SelectDate.ToString( "D", DateTimeFormatInfo.InvariantInfo );

DateTime dat2 = dat1;
if( this.txtWeeklyView.Value == "true" )
dat2 = dat1.AddDays( 6 );
else if( SelectDate.DayOfWeek == DayOfWeek.Saturday )
dat2 = dat1.AddDays( 1 );

this.txtSelectDay.Value = "";
this.txtWeeklyView.Value = "false";

int n = 0;
for( int nrow = 0; nrow < dtable.Rows.Count; nrow++)
{
DateTime dd = ((DateTime)dtable.Rows[nrow]["ActiveDateTime"]);
dd = dd.AddHours( tz );


if( dd.Date >= dat1.Date &&
dd.Date <= dat2.Date/* &&
dtable.Rows[nrow]["Consensus"] != System.DBNull.Value*/ )
{
string type = (string)dtable.Rows[nrow]["Type"];
strDetalledListing += string.Format( "<tr bgcolor='{8}' class='table1' align='center'>" +
"<td height=20>{0}</td>" +
"<td>{10}</td>" +
"<td> <A target=_blank href=calendar_dashboard.aspx?ItemID={2}&Curency={9}>{1}</A></td>" +
"<td>{3}</td>" +
"<td>{4}</td>" +
"<td>{5}</td>" +
"<td>{6}</td>" +
"<td>{7}</td></tr>",
dd.ToString( "dd-MMM HH:mm", DateTimeFormatInfo.InvariantInfo ),
dtable.Rows[nrow]["LongTitle"],
dtable.Rows[nrow]["Item_ID"],
dtable.Rows[nrow]["Period"],
type,
Components.comm.format( type, dtable.Rows[nrow]["Previous"] ),
Components.comm.format( type, dtable.Rows[nrow]["Consensus"] ),
dtable.Rows[nrow]["scale"],
(n & 1) == 0 ? "#ffffff" : "#eeeeee",
sel1.SelectedValue,
dtable.Rows[nrow]["Country"] );
n++;
}
}
}
llsen 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 desegou 的回复:]
Developer Express .net里Scheduler你试试
[/Quote]

下了一个组件,
但是没找到
Scheduler这个控件
llsen 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 wangjun8868 的回复:]
C# code
protected void Page_Load(object sender, EventArgs e)
{
createCalendar(2008,12);//输入参数进行测试
}
private void createCalendar(int year,int month)
{
int days = DateTime.DaysInMonth(year,month);//得到当月的天数
DateTime dt = new DateTime(year,month, 1);
int weeke =Convert.ToInt32(dt.DayOfWeek.ToString("d"));//得到当月的第一…
[/Quote]

这样好像只生成了日历控件
自定义数据部分没有实现,关键是这部分
llsen 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 yanm7788 的回复:]
引用 28 楼 llsen 的回复:
引用 27 楼 babyt 的回复:
数据肯定要一次性取出来,这是个基本前提


我这种貌似数据好像没办法一次性取出来
有什么好方法一次性取出来吗
类似于日期控件的日程


能不能一个视图取出全部数据?
[/Quote]

我找不到这样的方法,因为每天的数据是离散的,都要根据当前天做参数
另外还要加节假日和礼拜天判断
hhhh63 2009-06-16
  • 打赏
  • 举报
回复
我做过的类似的 http://www.forexdatasource.com/icalendar/calendar_list.aspx

用后台代码生成的html文本,大表套小表。

有必要的话,我可以写一段代码。
加载更多回复(81)

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧