几本闲书

   :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  5 Posts :: 0 Stories :: 22 Comments :: 0 Trackbacks

2007年4月10日 #

近日发现当初对发行系统出投递单的策划非常不合理。
原来策划,出刊前几日,搜索数据库所有符合条件的用户订单。并生成EXCEL文档。e给邮局或投递公司。
例如5号出投递单,10号发刊。
对以生成过投递单的用户订单做上标示符。5号与10号之间的新用户,可以此标识符判断。亦可防止二次出单。
在此过程中需要对所有生成过投递单的记录,UPDATE一次。
同时原来的想法是:由于每月出刊是可变的,所以我们以杂志名称,起订日期,加剩余期数这三个条件来判断。因此,只要生成过投递单的记录都必须把剩余期数-1.这个过程现在想来也及不合理。
后来和同事想到另一方案:另单独一表用与储存生成投递单这个动作。记录下那些用户订单在什么时候出过单。INSERT一次。
两种方案看来都需要一次对大量数据进行处理。

posted @ 2007-04-10 13:41 rico 阅读(298) | 评论 (3)编辑

当DataGrid数据绑定之后
将数据存入Cache;
dgList.DataSource = ds;
                
this.Cache["DataSet"= ds;
                dgList.DataBind();
而后
分页:
        /// <summary>
        
/// Handles the PageIndexChanged event of the dgList control.
        
/// </summary>
        
/// <param name="source">The source of the event.</param>
        
/// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridPageChangedEventArgs"/> instance containing the event data.</param>

        private void dgList_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        
{
            
int pageIndex = 0;
            
if(e.NewPageIndex>this.dgList.PageCount-1)
                pageIndex 
= this.dgList.PageCount-1;
            
else if(e.NewPageIndex<0)
                pageIndex 
= 0;
            
else
                pageIndex
=e.NewPageIndex;
            
this.dgList.CurrentPageIndex = pageIndex;

            
this.dgList.DataSource = (DataSet)this.Cache["DataSet"];
            
this.dgList.DataBind();
        }
排序:
注意必须在DataGrid中属性生成器设置排序表达式。
        /// <summary>
        
/// Handles the SortCommand event of the dgList control.
        
/// </summary>
        
/// <param name="source">The source of the event.</param>
        
/// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridSortCommandEventArgs"/> instance containing the event data.</param>

        private void dgList_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
        
{
            
if((string)this.ViewState["Sort"!= e.SortExpression)
                
this.ViewState["Sort"= e.SortExpression;
            
else
                
this.ViewState["Sort"= e.SortExpression+" DESC";


            DataSet ds 
= (DataSet)this.Cache["DataSet"];
            ds.Tables[
0].DefaultView.Sort = (string)this.ViewState["Sort"];
            
this.dgList.DataSource = ds.Tables[0].DefaultView;
            
this.dgList.DataBind();
        }

绑定 :
第一个IF语句表示鼠标移动,所选行变色。
第二个IF可以在{}内e.Item.Cells[*].Text设置DataGrid的值,也可再次绑定控件。或对绑定的控件加入javascript代码。
        /// <summary>
        
/// Handles the ItemDataBound event of the dgList control.
        
/// </summary>
        
/// <param name="sender">The source of the event.</param>
        
/// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridItemEventArgs"/> instance containing the event data.</param>

        private void dgList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        
{
        
            
if (e.Item.ItemType!=ListItemType.Header)
            
{
                e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
                e.Item.Attributes.Add( 
"onmouseover","this.style.backgroundColor=\"""Gray"+"\"");
                     }

            
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
            
{
                     }

         }
posted @ 2007-04-10 11:10 rico 阅读(1607) | 评论 (7)编辑

最近做出版发行系统用到这块.
所以张罗了一个简单解决方案。
说它简单,是因为未对Excel做什么处理。
public void datasetToExcel1(string fileName)
        
{
            DataSet ds 
= (DataSet)this.Cache["DataSet"];
            DataTable dt
=ds.Tables[0];

            System.IO.StringWriter sw
=new System.IO.StringWriter(); 
            sw.WriteLine(
"姓名\t公司\t投递地址\t邮编\t份数\t手机\t电话"); 
            
foreach(DataRow dr in dt.Rows) 
            

                sw.WriteLine(dr[
"pSubscriberName"]+"\t"+dr["pSubscriberCompany"]+"\t"+dr["pSubscriberAddress"]+"\t"+dr["pSubscriberPost"]+"\t"+dr["pMagazineShareNum"]+"\t"+dr["pSubscriberPhone"]+"\t"+dr["pSubscriberTel"]); 
            }
 
            sw.Close(); 
            Response.AddHeader(
"Content-Disposition""attachment; filename="+System.Web.HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+".xls"); 
            Response.ContentType 
= "application/ms-excel"
            Response.ContentEncoding
=System.Text.Encoding.GetEncoding("GB2312"); 
            Response.Write(sw); 
            Response.End();
        }
这里要注意的是fileName 必须进行转换,不然下载的文件名是乱码。
posted @ 2007-04-10 10:58 rico 阅读(2391) | 评论 (12)编辑

2007年3月26日 #

早上一来,不知道怎么就点进了一个网站
http://ihome.1001m.com/
据说是最先进的FLASH网站,用的是ASWING技术。

地址:http://www.aswing.org/index.html

开发环境:
Eclipse3.1 + ASDT + Flashout + MTASC
Eclipse3.1:IDE
ASDT:Eclipse3.1的 AS2.0插件
Flashout:项目构建控制(也可以用 Ant,看个人喜好)
MTASC:开源的 AS2.0 编译器

很有感触,才发现原来网站是可以做成这个样子的。
这个也可以用FLASHDEVELOP做。
随着网速,硬件设施的提高,未来那种简单的页面又如何才能吸引眼球。
也许是对微软技术了解还不深刻。
不知道微软.NET有没有对FLASH建站有很强的支持
据说FRAMWORK3.0已经集成了FLASH而却更强大。一直也没时间去研究。

posted @ 2007-03-26 09:28 rico 阅读(53) | 评论 (0)编辑

2007年3月22日 #

我快要看到程序大门的那条门缝了~~~~~~

posted @ 2007-03-22 11:19 rico 阅读(35) | 评论 (0)编辑