2012年2月27日

[转]SQL Server 2005数据库关系图打不开

2010-10-21 10:30
选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或   Alter   AUTHORIZATION   语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。

解决方法如下:

1、设置兼容级别为90(2005为90)

USE    [master]  

GO   EXEC    dbo.sp_dbcmptlevel    @dbname='数据库名',    @new_cmptlevel=90  

GO   

或是选责你还原的数据库,点右键,选属性->选项->兼容级别,选择sqlserver2005(90) 然后确定,

    这时,你在该数据库下展开“数据库关系图”节点时会有个提示,"此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建",选择“是”即可。

2、通过以上的方法操作,如果问题依然存在的话,按下列方法继续

选择你的数据库,然后选择"安全性"->"用户",选择dbo,打开属性页,如登录名为空的话,新建查询,然后

use [你的数据库名] EXEC     sp_changedbowner     'sa'

执行成功后,你再选择"数据库关系图"节点,时提示 “此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建",选择“是”即可。 就可以看到原先建的关系图了。

posted @ 2012-02-27 16:13 Thankstar 阅读(121) 评论(0) 编辑

2011年10月19日

SQL ServerReporting Services 教程

MSDN 是学习微软东西的最好的免费平台了:

下面的网址是SQL ServerReporting Services   教程  入门用的。

http://msdn.microsoft.com/zh-cn/library/bb522859.aspx

posted @ 2011-10-19 15:53 Thankstar 阅读(11) 评论(0) 编辑

How to find the Report Data tab in SSRS after closing it

August 2, 2011

Today I was rocking along in SSRS 2008R2 and then absent mindedly closed the Report Data tab by clicking the x at the top corner!  When I go to the View menu, I do NOT have the choice of Report Data.

no Report Data

Never fear. I’ve found a few ways to get it back. 

One way is to use the key combination Ctrl-Alt-D    But that may not do anything unless you first either double click on the name of the report ([reportname].rdl) in Solution Explorer or simply click on the Design surface where you’re creating the report. 

report in progress

In fact, clicking on the report in progress itself may bring Report Data back to the old View menu immediately!

report data

If all else fails and you can’t seem to get Report Data to reappear, you can always reset your windows to the way Nature intended them.

reset windows

{ 13 comments… read them below or add one }

Study Methods August 4, 2011 at 10:10 pm

Nice post and properly explained….can you please make a simple video of it, because then it would be more clear. I was bit confused about to find the Report Data tab….thanks indeed

Reply

Desi August 10, 2011 at 2:06 am

Thank you very much for this post. Very helpful constantly I have problem with the SSRS

Reply

Glennda August 17, 2011 at 5:46 am

Yes it would be much clearer on videos although your illustration is fine but there are newbies who wanted to learn from you also.

Reply

Mark Testa from california mls listing service August 20, 2011 at 8:22 am

Another great input! This really useful and I’m sure it will come in handy one of these days. I see lots of people having trouble with SSRS. Haven’t read much about solutions like these for SSRS errors before.

Reply

Gary Ashton from Nashville homes August 20, 2011 at 9:59 am

Awesome! You actually figured it out yourself! Thanks for sharing this one. I might actually need this just in case I click that x button! :) Helpful post. Thanks!

Reply

Tom from namco pools sprinfield September 20, 2011 at 8:56 am

A great way thanks for the article

Reply

Dany from Yahoo domain September 22, 2011 at 3:38 pm

I don’t use SSRS but I do find little keyboard shortcuts like these useful in many programs! Especially one that recovers data that you thought you’ve already lost!

Reply

miftah from tablet computer September 23, 2011 at 2:22 pm

really helpful for me, before I always lost data after closing

Reply

jesna from blogging tips September 28, 2011 at 2:25 am

I often had this issue. Thank you for this detailed post!

Reply

Paul from Wooden Gates September 29, 2011 at 9:12 am

I kept doing the same thing with SSRS; I haven’t been using recently as I kept closing tabs and then having to try to find how to bring them back.

Reply

manchester magazine October 8, 2011 at 9:29 am

I recently came across your blog and have been reading posts. I thought I would leave a comment. I don’t know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.

Reply

Alex from Pastile de slabit October 9, 2011 at 10:43 am

Thanks for the very informative article i bet you helped a lot of people.

Reply

Stephen Jack from Used Cellphones October 12, 2011 at 5:51 pm

I think you will be able to help people in much better way if you make a video tutorial of this video and upload in on youtube. Don’t forget to give the copyrights to everyone so that people can also post it on their blogs and spread the awareness. Anyhow thumbs up for you

Reply

posted @ 2011-10-19 15:52 Thankstar 阅读(49) 评论(0) 编辑

2011年10月18日

在建立与服务器的连接时出错(转)

2009-10-19 17:28:43|  分类: SQL 数据库 |  标签: |字号 订阅

转自:http://k.pconline.com.cn/question/841408.html

刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:“在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) “搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,现在总结如下:明白了SQL Server是个网络数据库就可迎刃而解了,简单的分为下面的集中情况。
1. 数据库引擎没有启动。

有两种启动方式:

(1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击“服务的连接的外围应用配置器“,在打开的界面中找到Database Engine,单击“服务“,在右侧查看是否已启动,如果没有启动可单击“启动“,并确保“启动类型“为自动,不要为手动,否则下次开机时又要手动启动;

(2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的“启动服务“按钮把服务状态改为启动;

使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看“SQL Server 2005配置管理器“中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.

2. 是否已经允许远程连接。

这个部分可以简单的分为4个方面,分别是在 SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。


  在SQLServer 实例上启用远程连接
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“数据库引擎(database engine)”, 选中“远程连接”,在右边选中“本地连接和远程连接”,
再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:
“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
4.展开“数据库引擎”, 选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止,
然后单击“启动”,重新启动MSSQLSERVER 服务。 

启用 SQLServer 浏览器服务
1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”
3.然后单击展开“SQL Server Browser”, 选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回

在Windows 防火墙中为“SQL Server 2005”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe”,
单击“确定”返回 
注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。 MSSQL.1 是占位符,对应数据库实例ID。
4

posted @ 2011-10-18 18:05 Thankstar 阅读(31) 评论(0) 编辑

2011年10月17日

Windows 7 安装 Sql Server Reporting Services 提示 IIS 未装(其实已经装了IIS)

 

 

  • 必须使用 Windows Vista Enterprise Edition、Ultimate Edition 或 Business Edition。
  • 可以安装以下任意 SQL Server 2005 版本:Developer Edition、Standard Edition、Workgroup Edition、Evaluation Edition 或具有高级服务的 Express Edition。 Windows Vista 不支持 Enterprise Edition。
  • 您必须为 Reporting Services 安装应用 Service Pack 2 (SP2)。对于大多数版本,必须先安装原始的产品版本,然后再升级到 SP2。 如果使用具有高级服务的 Express Edition,则可以运行已经应用了 SP2 的安装程序。 有关详细信息,请参阅 Microsoft 网站上的 具有高级服务的 Microsoft SQL Server 2005 Express Edition Service Pack 2
  • 在安装 Reporting Services 之前,必须启用 ASP.NET 和 IIS。 若要启用这些功能,请执行以下操作:
    1. 单击“开始”。
    2. 单击“控制面板”
    3. 单击“程序”
    4. 单击“程序和功能”,再单击“打开或关闭 Windows 功能”。 等待显示功能列表。
    5. 打开“Internet 信息服务”。
    6. 在“Web 管理工具”中,启用以下功能:
      IIS 6 WMI 兼容性
      IIS 元数据库和 IIS 6 配置兼容性
    7. 在“万维网服务”中的“应用程序开发”中,启用以下功能:
      ASP.NET
      ISAPI 扩展
      ISAPI 筛选器
    8. 在“常见 HTTP 功能”中,启用以下功能:
      默认文档
      目录浏览
      HTTP 错误
      HTTP 重定向
      静态内容
    9. 在“安全”中,启用以下功能:
      Windows 身份验证

如果上述任一功能未启用,则安装程序会从“功能选择”页中排除 Reporting Services。

启用所需功能后,必须启动万维网发布服务才能安装 Reporting Services 的默认配置。 否则,必须在仅文件模式下安装 Reporting Services,并在 SQL Server 安装程序完成后配置报表服务器。

 

 

参考:MSDN   http://msdn.microsoft.com/zh-cn/library/bb630430%28SQL.90%29.aspx

posted @ 2011-10-17 16:50 Thankstar 阅读(97) 评论(0) 编辑

Reporting Services 在WIN7和2008下出现“授予的权限不足,无法执行此操作。 (rsAccessDenied)”的解决办法

Installing Reporting Services on Windows 7, Vista or Windows Server 2008

I recently had to reinstall Reporting Services 2008, and had to remind myself how to set it up correctly. Installing Reporting Services on Vista, and later operating systems, can be tricky. I've seen several forum posts of people spending days on installation problems... The culprit is the new security features in Vista. I really think Microsoft should have added a README-file telling how to avoid these problems, especially since they must have known about them already when they released SQL Server 2008. This is a simple quick-guide with a step-by-step guide how to install SQL Server Reporting Services 2008 on a local machine running Vista or later operating systems.

Key Prerequisites

In order to use Reporting Services you need to:

Protected mode is a security feature of Internet Explorer 7 and upwards, that uses new security features of Windows Vista to run in a "low integrity" security context. To enable Reporting Services, you can completely disable Protected mode (not recommended) or add Reporting Services to your trusted sites (recommended and described below).

Adding your account to the server roles is necessary if you do not want to run as administrator every time you start Internet Explorer.

BIDS/Visual Studio requires administrative privileges when communicating with Reporting Services. There seems to be no workaround, but running Visual Studio as administrator.

Below is a step-by-step description how to configure Reporting Services.

Disabling Internet Explorer protected mode for Report Manager

Right-click on Internet Explorer and choose Run as administrator:

In Internet Explorer, open the Internet Options and go to the Security tab. Select Trusted sites. Click on the Sites button:

Uncheck the Require server verification checkbox. Add http://localhost to the Websites list:

Close the options windows, but do not exit Internet Explorer.

Configuring Report Manager

Start Report Manager by going to http://localhost/reports. Click Properties. Click on New Role Assignment and add your account as Content Manager. Your account name should be in the form <computername>\<username> (for example Mini-laptop\Johan):

Also click on Site Settings, and then on Security. Add you account as System Administrator:

Trouble with these steps? Ensure that you are running Internet Explorer as administrator. Ensure that the necessary services are running - "SQL Server Reporting Services" and "SQL Server".

Windows 7

On Windows 7 it seems that Internet Explorer by default does not provide current user credentials to Reporting Services. What happens then is that you get a login prompt when you try to access Reporting Services. If you get a login prompt, you need to adjust security settings.

Choose Intenet Options and go to the Security tab. Click on Trusted sites. Either drag the security slider to low security or click on Custom level. If you click on Custom level, go to the User Authentication/Logon option and choose "Automatic logon with current name and password".

Developing Reports

Right click on SQL Server Business Intelligence Development Studio. Choose Run as administrator:

Running without administrative privileges will usually cause it to hang when contacting the Report Server. If you want to not have to choose Run as administrator every time, you can change properties on Visual Studio as shown below.

 

 

转自:http://blogical.se/blogs/jahlen/archive/2009/10/02/setting-up-sql-server-reporting-services-on-windows-7-vista-or-windows-2008.aspx

posted @ 2011-10-17 16:47 Thankstar 阅读(343) 评论(0) 编辑

2011年8月15日

分享经验, 技术探讨, 共同学习.

分享经验, 技术探讨, 共同学习.

欢迎来到我的博客, 大家千万不要客气。

http://www.cnblogs.com/NovaXie

希望一起进步。

posted @ 2011-08-15 15:47 Thankstar 阅读(7) 评论(0) 编辑

【转】ASP.NET程序中常用的三十三种代码

1.   打开新的窗口并传送参数:      
   
    传送参数:    
   
  response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")      
   
    接收参数:    
   
  string   a   =   Request.QueryString("id");    
  string   b   =   Request.QueryString("id1");      
   
    2.为按钮添加对话框    
   
  Button1.Attributes.Add("onclick","return   confirm(’确认?’)");    
  button.attributes.add("onclick","if(confirm(’are   you   sure...?’)){return   true;}else{return   false;}")      
   
    3.删除表格选定记录    
   
  int   intEmpID   =   (int)MyDataGrid.DataKeys[e.Item.ItemIndex];    
  string   deleteCmd   =   "DELETE   from   Employee   where   emp_id   =   "   +   intEmpID.ToString()      
   
    4.删除表格记录警告    
   
  private   void   DataGrid_ItemCreated(Object   sender,DataGridItemEventArgs   e)    
  {    
   switch(e.Item.ItemType)    
   {    
    case   ListItemType.Item   :    
    case   ListItemType.AlternatingItem   :    
    case   ListItemType.EditItem:    
     TableCell   myTableCell;    
     myTableCell   =   e.Item.Cells[14];    
     LinkButton   myDeleteButton   ;    
     myDeleteButton   =   (LinkButton)myTableCell.Controls[0];    
     myDeleteButton.Attributes.Add("onclick","return   confirm(’您是否确定要删除这条信息’);");    
     break;    
    default:    
     break;    
   }    
   
  }      
   
    5.点击表格行链接另一页    
   
  private   void   grdCustomer_ItemDataBound(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)    
  {    
   //点击表格打开    
   if   (e.Item.ItemType   ==   ListItemType.Item   ||   e.Item.ItemType   ==   ListItemType.AlternatingItem)    
    e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id="   +   e.Item.Cells[0].Text   +   "’);");    
  }      
   
    双击表格连接到另一页    
   
    在itemDataBind事件中    
   
  if(e.Item.ItemType   ==   ListItemType.Item   ||   e.Item.ItemType   ==   ListItemType.AlternatingItem)    
  {    
   string   OrderItemID   =e.item.cells[1].Text;    
   ...    
   e.item.Attributes.Add("ondblclick",   "location.href=’../ShippedGrid.aspx?id="   +   OrderItemID   +   "’");    
  }      
   
    双击表格打开新一页    
   
  if(e.Item.ItemType   ==   ListItemType.Item   ||   e.Item.ItemType   ==   ListItemType.AlternatingItem)    
  {    
   string   OrderItemID   =e.item.cells[1].Text;    
   ...    
   e.item.Attributes.Add("ondblclick",   "open(’../ShippedGrid.aspx?id="   +   OrderItemID   +   "’)");    
  }      
   
    ★特别注意:【?id=】   处不能为   【?id   =】    
   
  6.表格超连接列传递参数    
   
  <asp:HyperLinkColumn   Target="_blank"   headertext="ID号"   DataTextField="id"   NavigateUrl="aaa.aspx?id=’    
   <%#   DataBinder.Eval(Container.DataItem,   "数据字段1")%>’   &   name=’<%#   DataBinder.Eval(Container.DataItem,   "数据字段2")%>’   />      
   
    7.表格点击改变颜色    
   
  if   (e.Item.ItemType   ==   ListItemType.Item   ||e.Item.ItemType   ==   ListItemType.AlternatingItem)    
  {    
   e.Item.Attributes.Add("onclick","this.style.backgroundColor=’#99cc00’;    
        this.style.color=’buttontext’;this.style.cursor=’default’;");    
  }        
   
    写在DataGrid的_ItemDataBound里    
   
  if   (e.Item.ItemType   ==   ListItemType.Item   ||e.Item.ItemType   ==   ListItemType.AlternatingItem)    
  {    
  e.Item.Attributes.Add("onmouseover","this.style.backgroundColor=’#99cc00’;    
     this.style.color=’buttontext’;this.style.cursor=’default’;");    
  e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=’’;this.style.color=’’;");    
  }      
   
   
    8.关于日期格式    
   
    日期格式设定    
   
  DataFormatString="{0:yyyy-MM-dd}"      
   
    我觉得应该在itembound事件中    
   
  e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))      
   
    9.获取错误信息并到指定页面    
   
    不要使用Response.Redirect,而应该使用Server.Transfer    
   
    e.g    
   
  //   in   global.asax    
  protected   void   Application_Error(Object   sender,   EventArgs   e)   {    
  if   (Server.GetLastError()   is   HttpUnhandledException)    
  Server.Transfer("MyErrorPage.aspx");    
   
  //其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了   :)    
  }      
   
    Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理      
   
    10.清空Cookie    
   
  Cookie.Expires=[DateTime];    
  Response.Cookies("UserName").Expires   =   0

11.自定义异常处理    
   
  //自定义异常处理类      
  using   System;    
  using   System.Diagnostics;    
   
  namespace   MyAppException    
  {    
   ///   <summary>    
   ///   从系统异常类ApplicationException继承的应用程序异常处理类。    
   ///   自动将异常内容记录到Windows   NT/2000的应用程序日志    
   ///   </summary>    
   public   class   AppException:System.ApplicationException    
   {    
    public   AppException()    
    {    
     if   (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。");    
    }    
   
   public   AppException(string   message)    
   {    
    LogEvent(message);    
   }    
   
   public   AppException(string   message,Exception   innerException)    
   {    
    LogEvent(message);    
    if   (innerException   !=   null)    
    {    
     LogEvent(innerException.Message);    
    }    
   }    
   
   //日志记录类    
   using   System;    
   using   System.Configuration;    
   using   System.Diagnostics;    
   using   System.IO;    
   using   System.Text;    
   using   System.Threading;    
   
   namespace   MyEventLog    
   {    
    ///   <summary>    
    ///   事件日志记录类,提供事件日志记录支持      
    ///   <remarks>    
    ///   定义了4个日志记录方法   (error,   warning,   info,   trace)      
    ///   </remarks>    
    ///   </summary>    
    public   class   ApplicationLog    
    {    
     ///   <summary>    
     ///   将错误信息记录到Win2000/NT事件日志中    
     ///   <param   name="message">需要记录的文本信息</param>    
     ///   </summary>    
     public   static   void   WriteError(String   message)    
     {    
      WriteLog(TraceLevel.Error,   message);    
     }    
   
     ///   <summary>    
     ///   将警告信息记录到Win2000/NT事件日志中    
     ///   <param   name="message">需要记录的文本信息</param>    
     ///   </summary>    
     public   static   void   WriteWarning(String   message)    
     {    
      WriteLog(TraceLevel.Warning,   message);      
     }    
   
     ///   <summary>    
     ///   将提示信息记录到Win2000/NT事件日志中    
     ///   <param   name="message">需要记录的文本信息</param>    
     ///   </summary>    
     public   static   void   WriteInfo(String   message)    
     {    
      WriteLog(TraceLevel.Info,   message);    
     }    
     ///   <summary>    
     ///   将跟踪信息记录到Win2000/NT事件日志中    
     ///   <param   name="message">需要记录的文本信息</param>    
     ///   </summary>    
     public   static   void   WriteTrace(String   message)    
     {    
      WriteLog(TraceLevel.Verbose,   message);    
     }    
   
     ///   <summary>    
     ///   格式化记录到事件日志的文本信息格式    
     ///   <param   name="ex">需要格式化的异常对象</param>    
     ///   <param   name="catchInfo">异常信息标题字符串.</param>    
     ///   <retvalue>    
     ///   <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>    
     ///   </retvalue>    
     ///   </summary>    
     public   static   String   FormatException(Exception   ex,   String   catchInfo)    
     {    
      StringBuilder   strBuilder   =   new   StringBuilder();    
      if   (catchInfo   !=   String.Empty)    
      {    
       strBuilder.Append(catchInfo).Append("\r\n");    
      }    
      strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace);    
      return   strBuilder.ToString();    
     }    
   
     ///   <summary>    
     ///   实际事件日志写入方法    
     ///   <param   name="level">要记录信息的级别(error,warning,info,trace).</param>    
     ///   <param   name="messageText">要记录的文本.</param>    
     ///   </summary>    
     private   static   void   WriteLog(TraceLevel   level,   String   messageText)    
     {    
      try    
      {      
       EventLogEntryType   LogEntryType;    
       switch   (level)    
       {    
        case   TraceLevel.Error:    
         LogEntryType   =   EventLogEntryType.Error;    
         break;    
        case   TraceLevel.Warning:    
         LogEntryType   =   EventLogEntryType.Warning;    
         break;    
        case   TraceLevel.Info:    
         LogEntryType   =   EventLogEntryType.Information;    
         break;    
        case   TraceLevel.Verbose:    
         LogEntryType   =   EventLogEntryType.SuccessAudit;    
         break;    
        default:    
         LogEntryType   =   EventLogEntryType.SuccessAudit;    
         break;    
       }    
   
       EventLog   eventLog   =   new   EventLog("Application",   ApplicationConfiguration.EventLogMachineName,   ApplicationConfiguration.EventLogSourceName   );    
       //写入事件日志    
       eventLog.WriteEntry(messageText,   LogEntryType);    
   
      }    
     catch   {}   //忽略任何异常    
    }      
   }   //class   ApplicationLog    
  }      
   
  12.Panel   横向滚动,纵向自动扩展    
   
  <asp:panel   style="overflow-x:scroll;overflow-y:auto;"></asp:panel>      
   
    13.回车转换成Tab      
   
  <script   language="javascript"   for="document"   event="onkeydown">    
   if(event.keyCode==13   &&   event.srcElement.type!=’button’   &&   event.srcElement.type!=’submit’   &&       event.srcElement.type!=’reset’   &&   event.srcElement.type!=’’&&   event.srcElement.type!=’textarea’);      
     event.keyCode=9;    
  </script>    
   
  onkeydown="if(event.keyCode==13)   event.keyCode=9"    
       
   
    14.DataGrid超级连接列    
   
  DataNavigateUrlField="字段名"   DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}"      
   
    15.DataGrid行随鼠标变色    
   
  private   void   DGzf_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=\""+   "#EFF3F7"+"\"");    
   }    
  }      
16.模板列    
   
  <ASP:TEMPLATECOLUMN   visible="False"   sortexpression="demo"   headertext="ID">    
  <ITEMTEMPLATE>    
  <ASP:LABEL   text=’<%#   DataBinder.Eval(Container.DataItem,   "ArticleID")%>’   runat="server"   width="80%"   id="lblColumn"   />    
  </ITEMTEMPLATE>    
  </ASP:TEMPLATECOLUMN>    
   
  <ASP:TEMPLATECOLUMN   headertext="选中">    
  <HEADERSTYLE   wrap="False"   horizontalalign="Center"></HEADERSTYLE>    
  <ITEMTEMPLATE>    
  <ASP:CHECKBOX   id="chkExport"   runat="server"   />    
  </ITEMTEMPLATE>    
  <EDITITEMTEMPLATE>    
  <ASP:CHECKBOX   id="chkExportON"   runat="server"   enabled="true"   />    
  </EDITITEMTEMPLATE>    
  </ASP:TEMPLATECOLUMN>      
   
    后台代码    
   
  protected   void   CheckAll_CheckedChanged(object   sender,   System.EventArgs   e)    
  {    
   //改变列的选定,实现全选或全不选。    
   CheckBox   chkExport   ;    
   if(   CheckAll.Checked)    
   {    
    foreach(DataGridItem   oDataGridItem   in   MyDataGrid.Items)    
    {    
     chkExport   =   (CheckBox)oDataGridItem.FindControl("chkExport");    
     chkExport.Checked   =   true;    
    }    
   }    
   else    
   {    
    foreach(DataGridItem   oDataGridItem   in   MyDataGrid.Items)    
    {    
     chkExport   =   (CheckBox)oDataGridItem.FindControl("chkExport");    
     chkExport.Checked   =   false;    
    }    
   }    
  }      
   
    17.数字格式化    
   
    【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】    
   
  <%#Container.DataItem("price","{0:¥#,##0.00}")%>    
   
  int   i=123456;    
  string   s=i.ToString("###,###.00");      
   
  18.日期格式化    
   
    【aspx页面内:<%#   DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%>    
   
    显示为:   2004-8-11   19:44:28    
   
    我只想要:2004-8-11   】    
   
  <%#   DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>      
   
    应该如何改?    
   
    【格式化日期】    
   
    取出来,一般是object((DateTime)objectFromDB).ToString("yyyy-MM-dd");    
   
    【日期的验证表达式】    
   
    A.以下正确的输入格式:   [2004-2-29],   [2004-02-29   10:29:39   pm],   [2004/12/31]      
   
  ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$      
   
    B.以下正确的输入格式:[0001-12-31],   [9999   09   30],   [2002/03/03]      
   
  ^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$        
   
    【大小写转换】    
   
  HttpUtility.HtmlEncode(string);    
  HttpUtility.HtmlDecode(string)      
   
    19.如何设定全局变量    
   
    Global.asax中    
   
    Application_Start()事件中    
   
    添加Application[属性名]   =   xxx;    
   
    就是你的全局变量    
   
    20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?    
   
    HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank")    
   
    【ASPNETMENU】点击菜单项弹出新窗口    
   
    在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如:    
   
  <?xml   version="1.0"   encoding="GB2312"?>    
  <MenuData   ImagesBaseURL="images/">      
  <MenuGroup>    
  <MenuItem   Label="内参信息"   URL="Infomation.aspx"   >    
  <MenuGroup   ID="BBC">    
  <MenuItem   Label="公告信息"   URL="Infomation.aspx"   URLTarget="_blank"   LeftIcon="file.gif"/>    
  <MenuItem   Label="编制信息简报"   URL="NewInfo.aspx"   LeftIcon="file.gif"   />    
  ......      
   
    最好将你的aspnetmenu升级到1.2版    
   
    21.读取DataGrid控件TextBox值    
   
  foreach(DataGrid   dgi   in   yourDataGrid.Items)    
  {    
   TextBox   tb   =   (TextBox)dgi.FindControl("yourTextBoxId");    
   tb.Text....    
  }      
   
    23.在DataGrid中有3个模板列包含Textbox分别为   DG_ShuLiang   (数量)   DG_DanJian(单价)   DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为   数值型.我如何用客户端脚本实现这个功能?    
   
    〖思归〗    
   
  <asp:TemplateColumn   HeaderText="数量">      
  <ItemTemplate>    
  <asp:TextBox   id="ShuLiang"   runat=’server’   Text=’<%#   DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>’      
  onkeyup="javascript:DoCal()"    
  />    
   
  <asp:RegularExpressionValidator   id="revS"   runat="server"   ControlToValidate="ShuLiang"   ErrorMessage="must   be   integer"   ValidationExpression="^\d+$"   />    
  </ItemTemplate>    
  </asp:TemplateColumn>    
   
  <asp:TemplateColumn   HeaderText="单价">      
  <ItemTemplate>    
  <asp:TextBox   id="DanJian"   runat=’server’   Text=’<%#   DataBinder.Eval(Container.DataItem,"DG_DanJian")%>’      
  onkeyup="javascript:DoCal()"    
  />    
   
  <asp:RegularExpressionValidator   id="revS2"   runat="server"   ControlToValidate="DanJian"   ErrorMessage="must   be   numeric"   ValidationExpression="^\d+(\.\d*)?$"   />    
   
  </ItemTemplate>    
  </asp:TemplateColumn>    
   
  <asp:TemplateColumn   HeaderText="金额">      
  <ItemTemplate>    
  <asp:TextBox   id="JinE"   runat=’server’   Text=’<%#   DataBinder.Eval(Container.DataItem,"DG_JinE")%>’   />    
  </ItemTemplate>    
  </asp:TemplateColumn><script   language="javascript">    
  function   DoCal()    
  {    
   var   e   =   event.srcElement;    
   var   row   =   e.parentNode.parentNode;    
   var   txts   =   row.all.tags("INPUT");    
   if   (!txts.length   ||   txts.length   <   3)    
    return;    
   
   var   q   =   txts[txts.length-3].value;    
   var   p   =   txts[txts.length-2].value;    
   
   if   (isNaN(q)   ||   isNaN(p))    
    return;    
   
   q   =   parseInt(q);    
   p   =   parseFloat(p);    
   
   txts[txts.length-1].value   =   (q   *   p).toFixed(2);    
  }    
  </script>      
   
  24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。    
   
  page_load      
  page.smartNavigation=true      
   
    25.在Datagrid中修改数据,当点击编辑键时,数据出现在文本框中,怎么控制文本框的大小   ?      
   
  private   void   DataGrid1_ItemDataBound(obj   sender,DataGridItemEventArgs   e)    
  {    
   for(int   i=0;i<e.Item.Cells.Count-1;i++)    
    if(e.Item.ItemType==ListItemType.EditType)    
    {    
     e.Item.Cells[i].Attributes.Add("Width",   "80px")    
    }      
  }      
   
    26.对话框    
   
  private   static   string   ScriptBegin   =   "<script   language=\"JavaScript\">";    
  private   static   string   ScriptEnd   =   "</script>";    
   
  public   static   void   ConfirmMessageBox(string   PageTarget,string   Content)    
  {    
   string   ConfirmContent="var   retValue=window.confirm(’"+Content+"’);"+"if(retValue){window.location=’"+PageTarget+"’;}";    
   
   ConfirmContent=ScriptBegin   +   ConfirmContent   +   ScriptEnd;    
   
   Page   ParameterPage   =   (Page)System.Web.HttpContext.Current.Handler;    
   ParameterPage.RegisterStartupScript("confirm",ConfirmContent);    
   //Response.Write(strScript);    
  }      
   
    27.   将时间格式化:string   aa=DateTime.Now.ToString("yyyy年MM月dd日");      
   
    1.1   取当前年月日时分秒      
   
  currentTime=System.DateTime.Now;      
   
    1.2   取当前年      
   
  int   年=   DateTime.Now.Year;      
   
    1.3   取当前月      
   
  int   月=   DateTime.Now.Month;        
   
    1.4   取当前日      
   
  int   日=   DateTime.Now.Day;        
   
    1.5   取当前时      
   
  int   时=   DateTime.Now.Hour;        
   
    1.6   取当前分      
   
  int   分=   DateTime.Now.Minute;        
   
    1.7   取当前秒      
   
  int   秒=   DateTime.Now.Second;        
   
    1.8   取当前毫秒      
   
  int   毫秒=   DateTime.Now.Millisecond;         
  28.自定义分页代码:    
   
    先定义变量   :    
   
  public   static   int   pageCount;   //总页面数      
  public   static   int   curPageIndex=1;   //当前页面        
   
    下一页:      
   
  if(DataGrid1.CurrentPageIndex   <   (DataGrid1.PageCount   -   1))      
  {      
   DataGrid1.CurrentPageIndex   +=   1;      
   curPageIndex+=1;      
  }      
   
  bind();   //   DataGrid1数据绑定函数        
   
    上一页:      
   
  if(DataGrid1.CurrentPageIndex   >0)      
  {      
   DataGrid1.CurrentPageIndex   +=   1;      
   curPageIndex-=1;      
  }      
   
  bind();   //   DataGrid1数据绑定函数        
   
    直接页面跳转:      
   
  int   a=int.Parse(JumpPage.Value.Trim());//JumpPage.Value.Trim()为跳转值      
   
  if(a<DataGrid1.PageCount)      
  {      
   this.DataGrid1.CurrentPageIndex=a;      
  }      
   
  bind();        
   
  29.DataGrid使用:      
   
    添加删除确认:      
   
  private   void   DataGrid1_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)      
  {      
   foreach(DataGridItem   di   in   this.DataGrid1.Items)      
   {      
    if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem)      
    {      
     ((LinkButton)di.Cells[8].Controls[0]).Attributes.Add("onclick","return   confirm(’确认删除此项吗?’);");      
    }      
   }      
  }        
   
    样式交替:      
   
  ListItemType   itemType   =   e.Item.ItemType;      
   
  if   (itemType   ==   ListItemType.Item   )      
  {      
   e.Item.Attributes["onmouseout"]   =   "javascript:this.style.backgroundColor=’#FFFFFF’;";      
   e.Item.Attributes["onmouseover"]   =   "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;"   ;      
  }      
  else   if(   itemType   ==   ListItemType.AlternatingItem)      
  {      
   e.Item.Attributes["onmouseout"]   =   "javascript:this.style.backgroundColor=’#a0d7c4’;";      
   e.Item.Attributes["onmouseover"]   =   "javascript:this.style.backgroundColor=’#d9ece1’;cursor=’hand’;"   ;      
  }        
   
    添加一个编号列:      
   
  DataTable   dt=   c.ExecuteRtnTableForAccess(sqltxt);   //执行sql返回的DataTable      
  DataColumn   dc=dt.Columns.Add("number",System.Type.GetType("System.String"));      
   
  for(int   i=0;i<dt.Rows.Count;i++)      
  {      
   dt.Rows[i]["number"]=(i+1).ToString();      
  }      
   
  DataGrid1.DataSource=dt;      
  DataGrid1.DataBind();        
   
    DataGrid1中添加一个CheckBox,页面中添加一个全选框      
   
  private   void   CheckBox2_CheckedChanged(object   sender,   System.EventArgs   e)      
  {      
   foreach(DataGridItem   thisitem   in   DataGrid1.Items)      
   {      
    ((CheckBox)thisitem.Cells[0].Controls[1]).Checked=CheckBox2.Checked;      
   }      
  }        
   
    将当前页面中DataGrid1显示的数据全部删除      
   
  foreach(DataGridItem   thisitem   in   DataGrid1.Items)      
  {      
   if(((CheckBox)thisitem.Cells[0].Controls[1]).Checked)      
   {      
    string   strloginid=   DataGrid1.DataKeys[thisitem.ItemIndex].ToString();      
    Del   (strloginid);   //删除函数      
   }      
  }        
   
    30.当文件在不同目录下,需要获取数据库连接字符串(如果连接字符串放在Web.config,然后在Global.asax中初始化)      
   
    在Application_Start中添加以下代码:      
   
  Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings.    
     AppSettings["ConnStr"].ToString();      
   
    31.   变量.ToString()      
   
    字符型转换   转为字符串      
   
  12345.ToString("n");   //生成   12,345.00      
  12345.ToString("C");   //生成   ¥12,345.00      
  12345.ToString("e");   //生成   1.234500e+004      
  12345.ToString("f4");   //生成   12345.0000      
  12345.ToString("x");   //生成   3039   (16进制)      
  12345.ToString("p");   //生成   1,234,500.00%        
   
    32、变量.Substring(参数1,参数2);      
   
    截取字串的一部分,参数1为左起始位数,参数2为截取几位。   如:string   s1   =   str.Substring(0,2);      
   
    33.在自己的网站上登陆其他网站:(如果你的页面是通过嵌套方式的话,因为一个页面只能有一个FORM,这时可以导向另外一个页面再提交登陆信息)      
   
  <SCRIPT   language="javascript">      
  <!--      
   function   gook(pws)      
   {      
    frm.submit();      
   }      
  //-->      
   
  </SCRIPT>   <body   leftMargin="0"   topMargin="0"   onload="javascript:gook()"   marginwidth="0"   marginheight="0">      
  <form   name="frm"   action="   http://220.194.55.68:6080/login.php?retid=7259   "   method="post">      
  <tr>      
  <td>    
  <input   id="f_user"   type="hidden"   size="1"   name="f_user"   runat="server">    
  <input   id="f_domain"   type="hidden"   size="1"   name="f_domain"   runat="server">    
  <input   class="box"   id="f_pass"   type="hidden"   size="1"   name="pwshow"   runat="server">      
   
  <INPUT   id="lng"   type="hidden"   maxLength="20"   size="1"   value="5"   name="lng">    
  <INPUT   id="tem"   type="hidden"   size="1"   value="2"   name="tem">      
   
  </td>      
   
  </tr>      
   
  </form>        
   
    文本框的名称必须是你要登陆的网页上的名称,如果源码不行可以用vsniffer   看看。      
   
    下面是获取用户输入的登陆信息的代码:      
   
  string   name;      
  name=Request.QueryString["EmailName"];      
   
  try      
  {      
   int   a=name.IndexOf("@",0,name.Length);      
   f_user.Value=name.Substring(0,a);      
   f_domain.Value=name.Substring(a+1,name.Length-(a+1));      
   f_pass.Value=Request.QueryString["Psw"];      
  }      
   
  catch      
  {      
   Script.Alert("错误的邮箱!");      
   Server.Transfer("index.aspx");      
  }      

posted @ 2011-08-15 15:19 Thankstar 阅读(350) 评论(0) 编辑

仅列出标题  

导航

统计

公告