XuGang

记录一个程序员的成长

 

小技巧_杂记


1) 如何在DataGrid中添加对话框? 2007.10.8

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||
                 di.ItemType==ListItemType.EditItem)
             {
                ((LinkButton)di.Cells[3].Controls[0]).Attributes.Add
                ("onclick","return confirm('delete?');");
             }
        }

 }
可以通过调试看到当在设置了Footer以后DataGrid1.Items.Count>PageSize),一般情况下这么写就可以了
            if (e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem||
                e.Item.ItemType==ListItemType.EditItem)
            {
                ((LinkButton)e.Item.Cells[3].Controls[0]).Attributes.Add
                ("onclick","return confirm('delete?');");
            }

2) 将图片资源文件整合到DLL文件中  2007.10.8

1、新建一个类库,例如库名为 ResourcesLibrary;
2、添加引用 System.Drawing;
3、添加资源文件(添加--新建项--资源文件),例如文件名为 Resource1.resx;
4、添加图片(打开Resource1.resx,单击“添加资源”后的小三角,选择添加现有文件,选择需要作为资源的图片),例如添加了图片 Sunset.jpg
5、添加类,例如名为 GetImage.cs

using System;

namespace
 ResourcesLibrary
{
    
public class
 GetImage
    {
        
public
 System.Drawing.Bitmap GetSunset()
        {
            
return
 Resource1.Sunset;
        }
    }
}

6、UI层添加对类库的引用(ResourcesLibrary.dll)
7、添加aspx页面,例如名字为GetImage.aspx,Page_Load里添加如下代码

protected void Page_Load(object sender, EventArgs e)
    {
        ResourcesLibrary.GetImage img 
= new
 ResourcesLibrary.GetImage();
        System.Drawing.Bitmap bmp 
=
 img.GetSunset();
       
        System.IO.MemoryStream ms 
= new
 System.IO.MemoryStream();
        
try

        {
            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            Response.ClearContent();
            Response.ContentType 
= "image/Png";
            Response.BinaryWrite(ms.ToArray());
        }
        
finally

        {
            bmp.Dispose();            
        }  
    }

8、新建aspx页面
<div>
    
<asp:Image ID="img1" runat="server" ImageUrl="~/Mick/GetImage.aspx" />        
    
</div>

把图片放到资源文件中,用起来稍微麻烦了些,但减少了发布文件的数量。

3) 如何通过Request获得另一个页面的字符串  2007.10.12
 protected void Add_Button_Click(object sender, ImageClickEventArgs e)
    {
        string strScript = "<script defer>\n" +
               "var strReturn = window.showModalDialog('cesAdd.aspx','desc','dialogWidth:350px;dialogHeight=300px');\n" +
               "__doPostBack('AddLink',strReturn); </script>";  //LButton
        if (!this.ClientScript.IsClientScriptBlockRegistered("OpenDialogScript"))
            this.ClientScript.RegisterStartupScript(this.GetType(), "OpenDialog", strScript);    
    }
    protected void AddLink_Click(object sender, EventArgs e)
    {
        string Addstring = Request["__EVENTARGUMENT"];
    ......
    }

4) Win2003安装IIS时,提示无法复制staxmem.dll、iisapp.vbs、convlog.exe等文件的解决方法    2007.10.13
安装IIS时如果老提示无法复制staxmem.dll、iisapp.vbs、convlog.exe等文件,在确定你的安装盘或安装文件及你的操作系统的SP版本没问题没错的情况下,就别找同名文件来替换了,产生这样的问题是因为:损坏了系统内部数据库所致.修复损坏的数据文件即可正常安装。
解决方法如下(开始 > 运行 > 输入 CMD >再输入以下命令):
1、esentutl /g %windir%/security/database/secedit.sdb (该命令参数用于查询secedit.sdb文件是否被损坏,若返回“Integrity check successful”,刚表示该文件没有被损坏,否则请执行第2步命令参数以修复secedit.sdb文件)
2、esentutl /p %windir%/security/database/secedit.sdb  (修复secedit.sdb文件)
3、插入安装盘再试一下,问题迎刃而解。

5) ASP.NET 中 CSS 不起作用的原因   2007.10.16
一般来说,ASP.NET  中 CSS 不起作用,只会在 IE 6 及以前的版本中出现,原因是因为 给定的 CSS 文件中包含不一致编码的文字。
如下列 CSS 文件:

body  /*     普通样式  */
{
         color
:#ffffff;
}

其中所包含有中文和英文。在默认情况下,ASP.NET 以 utf-8 的编码发送响应,如果 CSS 文件被保存为 gb2312 的话,IE6将无法解析其中的中文,从而无法应用样式,造成的现象就是 CSS 类不起作用。
解决方法如下:
1 打开 CSS 文件
2 选择[文件]菜单中的 [ 高级保存选项 ] 如图1 所示:


选择如图所示的 utf-8 编码,然后 [ 确定 ],再保存即可。

5) GridView的相关设置   2007.10.18
在DataGrid中日期设置OnClientClick属性来为按钮指定客户端单击事件,方法如下:
<asp:TemplateField ShowHeader="False">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="Test" Text="按钮" OnClientClick="return confirm('你确认要删除这条数据吗?');"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

关于时间字段的格式化输出
假如我们有一个时间字段,数据为"2005-12-23 10:01:20",想显示为"10:01"
在DataGrid中,我们可以简单的设置字段的显示格式即可,如:
<asp:BoundField DataField="datetime" DataFormatString="{0:HH:mm}" />

使用模板列的方法如下:
<asp:TemplateField HeaderText="时间">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("datetime", "{0:HH:mm}") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

6)net2.0部署   2007.10.19
常用下载

.NET Framework 2.0:Microsoft .NET Framework 2.0 版可再发行组件包 (x86)
.NET Framework 2.0语言包:Microsoft .NET Framework 2.0 版简体中文语言包 (x86)
ASP.NET 2.0 AJAXASP.NET 2.0 AJAX Extensions 1.0

RDLC报表浏览:Microsoft Report Viewer Redistributable 2005 SP1 (完全安装)
RDLC报表浏览语言包:Microsoft Report Viewer 2005 语言包

RDLC报表部署时服务器缺少DLL:
An error occurred during local report processing.
The definition of the report 'Main Report' is invalid.
An unexpected error occurred in Report Processing.
未能加载文件或程序集“Microsoft.ReportViewer.ProcessingObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

以前是找到以下3个dll文件:
1) Microsoft.ReportViewer.Common.dll
2) Microsoft.ReportViewer.WebForms.dll
3) Microsoft.ReportViewer.ProcessingObjectModel.dll
前两个都可以在C:\Program Files\Microsoft Visual Studio 2005\ReportViewer 中找到,第三个怎么也找不到。
现在只需下载Report VIewer 安装到客户服务器端就可以了。


7)代码注册updatepanle的更新事件   2007.11.4
实现代码如下:    
首先在Page_Load向ScriptManager1注册异步更新的触发控件        ScriptManager1.RegisterAsyncPostBackControl(btnAdd);   
然后在btnAdd的某个触发事件里调用要更新的方法;
最后该事件执行后,调用更新区域的updatepanle执行update()方法即可。

posted on 2007-10-08 11:40  钢钢  阅读(1660)  评论(2编辑  收藏  举报

导航