很久没来写日志了.

自从换了份工作后.就没有做那种一直不停的做项目的工作了

现在公司就一个项目,开发+运营.所以碰到新问题的机会相对以前较少.但是现在自由学习时间却多了很多.

抽空学习了asp.net mvc.这也是近段时间来的收获.

说起mvc,现在要说的问题也是跟它有关系的.

因为公司电脑上一直安装的是vs2005.所以要学得先装上vs2008.

然后断断续续的下载了几天时间终于将4G多的vs2008下载好了.正好公司这几天事情不多.

就拿这2008开始学习MVC,之前在没有实践的情况下看了一些MVC的文章.但一直没深入学习.

然后花了2天几乎看了所有国内的教程,实践了一下blog和留言本(用来练习的最好项目了~)..终于把mvc的障碍差不多扫清了..

跟webform的编程方式对比起来,,我个人更喜欢mvc..webform确实给我省了不少时间.但是我不喜欢他那臃肿的代码.

言归正穿,安装了vs2008后.关于vs2005和vs2008的问题也随之而来了..

在安装08之前,我在网上查过,说这2个安装一起是没有问题的,所以我才安装了.

在我昨天更改了公司的项目上一个小地方之后.我将网站又发布了一次(vs2005).然后上传到服务器上了.一切看起来都很正常...

可没过一会,有反映过来页面上一些按钮无效了..马上检查..发现好几个页面的imagebutton按钮无效了还有验证控件都失效..然后马上在网上查.

查了很久.按照网上讲的重新安装aspnet_regiis.exe都没用..根据网上的情况来考虑是验证控件的 js出了问题.

这时候我就开始怀疑是vs08和05冲突了..因为公司项目急.不能等我慢慢我研究解决办法.

所以马上将所有验证控件全部换成了js验证,正好当初要不是赶时间.我是不准备用验证控件的.这次都给换了..用js我更随心所欲,可以自己决定的东西,我就喜欢.这也是为什么我喜欢asp.net mvc更多一些.

对于这个vs2008和 vs2005会导致验证控件和imagebutton出问题的BUG..我也不能100%肯定是这个原因..但是从我这几天所做的事情来看.这个的可能性有95%..

所以大家安装了vs2005的..想再安装vs2008的..需要谨慎一点..以免出现大混乱..

 博客园的文章被收录挺快的.顺便推下我的小站.吸引点蜘蛛

电脑主题-凑虫网:http://www.couchong.com 这个在百度搜索"电脑主题",已经上升至第二位..不错的排名.

还有一个就是我家乡的分类信息站.主要是黄石本地的房屋信息,租房,售房,还有最重要的黄石人才网 http://www.520714.com

posted @ 2009-05-05 15:40 梦梦龙龙 阅读(1872) 评论(0) 编辑

此人QQ号:784886420

QQ名称:  我是一条鱼...

给他做一东西..做完之后..余款不付..直接拖黑名单跑人了..

结果我只收了定金..

呵呵...

希望大家看到此QQ号的SB再出现..一定莫被骗...

 

http://www.tj321.com.cn  这个是他的一个测试空间网址...

posted @ 2009-03-23 23:32 梦梦龙龙 阅读(48) 评论(0) 编辑

很简单的一个功能..项目中一处地方因为按月读的数据可能会需要保存下来,以供日后查看..

开始想的是导出excel,看了看觉得还不如直接存一个html页下来.决定了就做..

方法有两个:

1,生成静态页,但是对于抓区指定内容比较麻烦(因为要存的只是表格数据.对于其他的都不需要保存),需要处理读取到的htmlcode.麻烦.省了..

2,就是要说的JS办法.简单方便.看代码:

JS:

Code
    function   saveDoc(id,name)   //id:要保存的数据外层容器ID;name:要保存的文件名字.

      {      
          var   strHTML   =   id.outerHTML;   
          
var   winSave   =   window.open(); 
          
var now= new Date(); 
          
var year=now.getYear(); 
          
var month=now.getMonth()+1
          
var day=now.getDate(); 
          
var displayTime=year+'-'+month+'-'+day+name;
          winSave.document.open(
"text/html","utf-8");   
          winSave.document.write(strHTML);   
          winSave.document.execCommand(
"SaveAs",true,displayTime+".htm");   
          winSave.close();   
      }

 

HTML:

 

Code
<href="javascript:saveDoc(tableid,'利润表')">保存本表</a>
<table id="tableid">
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</table>

 

很简单的功能,对于我当前项目来说比导出excel或者生成html页都要划得来一些.

希望对大家有帮助....

posted @ 2009-02-13 13:39 梦梦龙龙 阅读(250) 评论(0) 编辑

每次写的随笔都是我在项目中用到的一些个人觉得比较值得记下的东西,

所以都会发到博客园来分享一下...希望觉得不错的兄弟支持一下..

这次记的是一个给sql的存储过程传数组参数的问题..大家都知道sql是不支持数组的,所以需要用特殊方法来处理..

在大多数项目中,都会有全选/删除这样的操作..一般的解决办法是在后台代码里循环执行sql语句..

昨天在我的项目中,遇到一个棘手的问题,就是传入任意的编号查询该编号下的信息..同时可以查10个以内的编号..这里不细说,难得描述...直接看语句吧...

这是一个将循环select出来的结果插入一张临时表合并起来...就是我要的结果了..里面注释得很清楚了.

 

Code
--执行存储过程

exec SelectAllByKemuCode '1001,1009','2009','2'

--存储过程内容
create PROCEDURE  sp_SelectAllByKemuCode
    
@kemucode_Array  varChar(max),   --这个是传进来的数组(格式是"123,456,789";大家可以根据自己的情况自己换分割符)
    
@pz_year varchar(4),  --这个是项目中需要的一个参数
 
@pz_month varchar(4)  --同上
 
AS
    
DECLARE  @PointerPrev int   --上一个位置
     
DECLARE @PointerCurr  int  --当前位置
    
DECLARE  @kemu_code varchar(50)   --这个就是分割得来的编号信息.自己更改使用.
    
declare @temp_table table(total_money decimal(18,2))   --临时表(一般insert,delete,update语句都不需要这个.我这里是特殊情况,需要保存所有select的信息.)
     
Set @PointerPrev=1 
    
set  @PointerCurr=1
     
    
begin transaction 
    
Set NoCount  ON
    
     
Set @PointerCurr=CharIndex (',',@kemucode_Array ,@PointerPrev+1)
     
set @kemu_code=cast (SUBSTRING(@kemucode_Array,@PointerPrev ,@PointerCurr-@PointerPrev)  as varchar(50))

--这里的sql语句大家就自己换了,,下面写的有点多..大家往简单里看..下面都一样了..

--例如:insert into db_yours_table values(xxx,xxx) 
insert into @temp_table(total_money) (select (sum(pz_borrow)+sum(pz_loan)) as total_money from View_kemu_account where kemu_code like @kemu_code+'%' and pz_isaccount = 0 and pz_year=@pz_year and pz_month=@pz_month group by pz_month)
    
    
SET @PointerPrev =  @PointerCurr
    
while  (@PointerPrev+1  < LEN(@kemucode_Array))
     
Begin
        
Set  @PointerCurr=CharIndex',',@kemucode_Array@PointerPrev+1)
         
if(@PointerCurr> 0)
        
Begin
             
set @kemu_code=cast (SUBSTRING(@kemucode_Array,@PointerPrev +1,@PointerCurr- @PointerPrev-1as  varchar(50))
insert into @temp_table(total_money) (select (sum(pz_borrow)+sum(pz_loan)) as total_money from View_kemu_account where kemu_code like @kemu_code+'%' and pz_isaccount = 0 and pz_year=@pz_year and pz_month=@pz_month group by pz_month)

SET @PointerPrev =  @PointerCurr

        
End 
        
else
             
Break
    
End 
    
     
set @kemu_code=castSUBSTRING(@kemucode_Array,@PointerPrev+ 1,LEN(@kemucode_Array )-@PointerPrevas  varchar(50))
insert into @temp_table(total_money) (select (sum(pz_borrow)+sum(pz_loan)) as total_money from View_kemu_account where kemu_code like @kemu_code+'%' and pz_isaccount = 0 and pz_year=@pz_year and pz_month=@pz_month group by pz_month)

SET @PointerPrev =  @PointerCurr

select * from @temp_table    
 
if @@error= 0
    
begin
         
commit transaction
     
end
    
else 
    
begin
         
rollback transaction
     
end
GO

 

看起来很多....其实挺实用的...不过传进去的那个数组组成的字符串多了的话执行效率不会高..

这个存储过程我也是网上搜出来的.然后自己根据项目修改得来..看到这个之前我可写不出来.呵呵.

虽然存储过程不是原创但分享精神可佳,希望大家支持....共同进步..

posted @ 2009-02-12 08:40 梦梦龙龙 阅读(1229) 评论(0) 编辑

一般项目总很多地方会有分类这样一个功能..

一级分类,二级分类,三级分类这样的..

要显示这样的一个分类,常用的方法是使用treeview控件.

但也有不少人是使用Repeater控件多个嵌套来模拟tree的..

怎么样实现呢,方法不少..现在来一个比较简单的.

上图:

 

这是一个简单的二级分类..

aspx代码是这样的:

 

Code
<asp:Repeater ID="Repeater1" runat="server">
        
<ItemTemplate>
        
<table>
        
<tr><td width="150"><h3>
            
<%#DataBinder.Eval(Container.DataItem,"kemu_category_name"%>//这里是绑定的一级分类名称
            
</h3></td></tr>
        
<tr><td>
            
<asp:Repeater ID="Repeater2" runat="server" DataSource='<%#GetDataSourceById(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"kemu_category_id"))) %>'>//这里的GetDataSourceById是一个带参数的方法,写在CS文件里.将一级分类的ID(kemu_category_id)传进来.

            
<ItemTemplate>
            
<table><tr><td>
            
<%#DataBinder.Eval(Container.DataItem,"kemu_name"%>//这里绑定的则是二级分类的名称了.
            
</td></tr></table>
            
</ItemTemplate>
            
</asp:Repeater>
        
</td></tr>
        
</table>
        
</ItemTemplate>
        
</asp:Repeater>

 

接下来看看CS文件的代码:

 

Code
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BLL;

public partial class web_account_kemumingxi : System.Web.UI.Page
{
    ManageKemu MKemu 
= new ManageKemu();
    DataSet ds 
= new DataSet();
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
                DataBindToRP1();
        }
    }

    
//绑定一级分类的方法.
    public void DataBindToRP1()
    {
        ds.Clear();
        ds 
= MKemu.ShowKemuCategory();//这里大家自己写数据读取的方法
        Repeater1.DataSource = ds;
        Repeater1.DataBind();
    }

    
//这里就是aspx文件里调用的那个方法了.返回一个DataSet
    public DataSet GetDataSourceById(int id)
    {
        MKemu.Kemu_category_id 
= id;
        ds 
= MKemu.ShowDetailKemu();
        
return ds;
    }
}

 

 

就这样就行了...代码不多吧..主要是比较简单,所以推荐使用..上面代码里的命名是随便写的,为了方便看.请看官不要追究命名规范问题...谢谢.

posted @ 2009-02-08 10:21 梦梦龙龙 阅读(667) 评论(3) 编辑
摘要: 真头疼...mssql:[代码]mysql:[代码]阅读全文
posted @ 2009-01-21 11:30 梦梦龙龙 阅读(761) 评论(0) 编辑
摘要: http://swfupload.org/http://www.codeplex.com/SLFileUpload/ http://ajaxuploader.com阅读全文
posted @ 2009-01-17 09:47 梦梦龙龙 阅读(147) 评论(0) 编辑
摘要: 今天的项目中遇到一个问题..gridview的EditItemTemplete列里DropDownList的值是从数据库读来的..所以需要让他动态绑定..捣鼓了半天..才发现一个比较好的办法..先在后台写一个绑定方法..[代码]再在前台代码里写类似如下代码:[代码]就这样..OK搞定..这只是我需要的一个实例..更多的扩展就大家自己去想了..阅读全文
posted @ 2008-12-25 14:08 梦梦龙龙 阅读(1040) 评论(0) 编辑
摘要: http://ajaxload.info/非常不错...做AJAX的朋友肯定会需要...特放这里记录一下.阅读全文
posted @ 2008-12-17 09:15 梦梦龙龙 阅读(608) 评论(0) 编辑
摘要: 在使用asp.net ajax时.如果需要在后台使用JS.用以前的 response.write("<script>...</script>");这样的方式是会报错的..这里就需要使用 ScriptManager.RegisterStartupScript 方法ScriptManager.RegisterStartupScript 方法 (Control, Type, St...阅读全文
posted @ 2008-12-16 11:45 梦梦龙龙 阅读(966) 评论(0) 编辑