ASP.NET开发经验积累

GridView相关 http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx

在开发过程中,通过摸索查资料,收集了一些值得提出来的经验:

1、 相对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for的30%。通过测试结果在for和foreach都可以使用的情况下,我们推荐使用效率更高的foreach。另外,用for写入数据时间大约是读取数据时间的10倍左右;

2、 在asp.net程序中,使用sa账号的是一种非常不安全的做法,它具有在数据库上执行任何操作的权限。黑客可以调用类似于xp_cmdshell这样的扩展存储过程进行攻击;

3、 在处理数据交互的时候,尽量将组织SQL语句的处理放到中间层(比如专门的数据操作类、存储过程等),这是防止注入式攻击的有效方法;

4、避免到服务器的不必要的往返过程。使用 Page.IsPostBack 避免对往返过程执行不必要的处理;

5、 一定要禁用调试模式;

6、 一般情况下,读取大量数据,对返回数据不做大量处理用SqlDataReader.对返回数据大量处理用DatSet比较合适.对SqlDataReader和DataSet的选择取决于程序功能的实现;

7、数据绑定建议使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>。数据量大的时候可提高几百倍的速度;

1、用SqlDataSource访问数据库库的方法:
<asp:SqlDataSource ID="SqlDS_Search" runat="server" ConnectionString="<%$

ConnectionStrings:chtNorthwind %>"
                SelectCommand="SELECT [员工号码], [姓名], [性别], [部门], [照

片] FROM [章立民研究室] WHERE ([部门] = @部门) ORDER BY [员工号码]" />

往sql里面传参数的方法:
SqlDS_Search.SelectParameters.Clear();//先清空,好习惯
SqlDS_Search.SelectParameters.Add("部门",部门参数的值);

2、Gridview 中显示某个字段的方法<%# Eval("员工号码") %>
Gridview中可以调用后台定义的函数。
例如:<%# FormatGender(Eval("性别")) %>
后台定义的方法:
// 将性别改用图标来显示。
    protected string FormatGender(object dataGender)
    {
        string myGender = Convert.ToString(dataGender);
        string strReturn = "";

        switch (myGender)
        {
            case "男":
                strReturn = "Images/male.gif";
                break;
            case "女":
                strReturn = "Images/female.gif";
                break;
        }

        return strReturn;
    }
3、myDate.DayOfWeek获取此实例所表示日期的星期几
myDate.ToLongDateString()获取此实例的值等效的长日期字符串eg:2009-2-14 20:34:06

myDate.ToShortDateString()获取此实例的值等效的短日期字符串eg:2009-2-20

4、可以用fromview内嵌一个table来显示详细的信息
EG:
<asp:FormView ID="FormView1" runat="server" DataKeyNames="员工号码"

DataSourceID="SqlDS_Detail">
<ItemTemplate>
        <table>...</table>
</ItemTemplate>
</asp:FormView>

5、SQLCmd.ExecuteReader(CommandBehavior.SingleRow)
CommandBehavior.SingleRow指定执行SQL时返回一条记录,可以提高效率

6、嵌入文字的边框的效果的代码:
<fieldset>
   <legend>嵌入的文字</legend>
</fieldset>

7、asp.net2.0的Wizard控件能够让您快速创建类似向导的步进式界面

8、MyDataView.RowFilter = "类别编号 = " + ((DataRowView)(e.Row.DataItem))["类

别编号"].ToString();
获取或设置用于筛选在 System.Data.DataView 中查看哪些行的表达式。

9、dataview.RowFilter="表达式";
作用:获取或设置用于筛选在 System.Data.DataView 中查看哪些行的表达式。
eg:
MyDataView.RowFilter = "类别编号 = " + ((DataRowView)(e.Row.DataItem))["类别编

号"].ToString();

10、gridview中格式化money的方法:
<%# Eval("订货金额", "{0:c}") %>或者<%# Bind("订货金额", "{0:c}") %>

11、调用被绑定至 GridView 数据列"库存量"字段的值的方法:
decimal stock =Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "库存量"));

12、设定gridview中某一行的背景的方法:e.Row.BackColor = Color.Red;

13、rand.Next(maxvalue):返回一个小于所指定最大值的非负随机数。

14、Gridview中的数据绑定Eval和Bind的区别:
Eval 函数是单向只读绑定。Bind 函数是双向可更新绑定。

15、AJAX的确认对话框代码:
<ajaxToolkit:ConfirmButtonExtender ID="CBE" runat="server"

TargetControlID="LinkButton1" ConfirmText="谢谢您的选购!&#10;您确定要结帐了吗

?"> </ajaxToolkit:ConfirmButtonExtender>

16、嵌入文字的方框的代码:
<asp:Panel ID="Panel1" runat="server" GroupingText="UpdatePanel 控件的内容"

Height="64px" Width="432px"></asp:Panel>

17、凡是通过URL传递的中文的参数都要经过Server.UrlEncode("中文参数")这个函数进

行编码

18、清空文本框中的内容:NameTextBox.Text = String.Empty;

19、从输入框中读入的内容最好用Server.HtmlEncode编码过:
string Department = Server.HtmlEncode(DepartmentTextBox.Text);

20、GridView中,如果要默认选中第一条记录,则要将gridview的这个属性设为零

SelectedIndex="0"

21、gridview中日期格式化的方法:在日期所在的列中加入这个属性:

DataFormatString="{0:d}" 格式化后的形式如下所示:1996-7-26

22、给带有参数的SqlDataSource赋值的方法:
eg:sqlDSObj.SelectParameters["CategoryID"].DefaultValue = r["类别编

号"].ToString();

23、将图像以二进制的数据存入数据库的方法:
public void UpdateEmployeePhoto(int EmployeeId, FileUpload PhotoFile)
    {
        if ((PhotoFile == null) || (!PhotoFile.HasFile))
        {
            return;
        }

        // 取得上传之照片文件的长度。
        int fileLen = PhotoFile.PostedFile.ContentLength;

        // 创建一个字节数组来存储文件的内容。
        byte[] Input = new byte[fileLen];
        Input = PhotoFile.FileBytes;

        using (SqlConnection cn = new SqlConnection

(ConfigurationManager.ConnectionStrings["chtNorthwind"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("UPDATE 章立民研究室 SET 照

片 = @Photo WHERE 员工号码 = @EmployeeID", cn))
            {
                cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value =

EmployeeId;
                cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = Input;
                cn.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }

24、判断字符串是否为空的函数:
!String.IsNullOrEmpty(inputString)

 


欢迎大家与我交流!更欢迎您提出宝贵意见!

posted @ 2008-07-30 14:21  xumingming  阅读(1262)  评论(7编辑  收藏  举报