两次小任务的总结

一、大致流程:列表查看--新增--编辑    对方列表查看--查看详细内容--确定   后台增加自动确定开关

二、技术总结

1.ItemDataBound  

对于每行数据显示的时候都会调用ItemDataBound事件,在这个事件中可以对当前行进行处理,事件对象主要成员:
(1)、e.Item.ItemType为当前行的类型,Item为ItemTemplate行、AlternatingItem为AlternatingItemTemplate行,还有Header、Footer等取值。
(2)、ItemIndex当前行的序号
(3)、DataItem当前行绑定的对象。

   

如果要在ItemDataBound事件中对ItemTemplate模板中的控件做处理,则必须使用runat=server的ASP.Net控件或者HTML控件,为控件设置Id,然后用FindControl根据Id来取得控件。注意在ASP.Net的模板中不能直接通过控件的Id来操作控件,必须用FindControl找到控件才能操作。

 

2.ItemCommand

先简述下ItemCommand 的功能

1.可以在模板中放置Button控件(Button、LinkButton、ImageButton),模板中的按钮一般不写OnClick事件响应,而是响Repeater的ItemDataBound事件。

2.为Button控件设定CommandName、CommandArgument属性,然后在ItemDataBound事件读取e的CommandName、CommandArgument属性就可以获得发生事件的命令和行参数了。如果对数据进行了操作,则需要对控件进行DataBind()来重新绑定,从数据库中刷新最新的数据。

 

3.textbox相关属性

(1)οnpaste="return false"   禁用粘贴
(2)οncοpy="return false"    禁用复制
(3)oncut="return false"       禁用剪切

(4)Style="ime-mode: disabled" οnkeypress="if (event.keyCode<48 || event.keyCode>57) event.returnValue=false;"   禁用输入法,并且仅能输入数字 

4.RegisterClientScriptBlock 与 RegisterStartupScript 的区别

RegisterClientScriptBlock、RegisterStartupScript 都是注册一个脚本块。
ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
它们的区别就是 RegisterClientScriptBlock 是注册在 body 最前面,而 RegisterStartupScript 是注册在 body 最后面。

为什么这样呢?一些优化性能的文章说,script 要放在 body 最后加载,但根据一些应用的实际情况,必须得在最初加载 script,这时就得用 RegisterClientScriptBlock 了。

第二个参数 key 是用来避免重复注册的,上面代码,他们的 key 都是 script1,但不会冲突,因为方法名称都不相同。

 

5.利用ItemDataBound改变不同状态时的设置按钮的不同显示并设置不同的CommandName

(1)根据不同的菜单改变显示:if (Request.QueryString["menuid"].ToString() == "PiaoLiang")

(2)根据不同的流程状态改变显示:if (e.Item.Cells[9].Text.Trim() == "7" || e.Item.Cells[9].Text.Trim() == "16")
(3)获得所有行的第二列第二个控件并强制转化为LinkButton类型,并改变其CommandName属性

                {
                    ((LinkButton)e.Item.Cells[1].Controls[1]).Text = "编辑";
                    ((LinkButton)e.Item.Cells[1].Controls[1]).CommandName = "editQuery";
                }

 

6.利用JS控制实现同一个页面供多菜单使用

(1)在ItemCommand事件中,根据CommandName来设置Session["OperationCode"],例如:Session["OperationCode"] = "Edit"

(2)前台JS中获取opeartion,例如:var opeartion = '<%= Session["OperationCode"].ToString().Trim()%>';

 (3)根据所需控制相应的部分隐藏或显示,例如:

        if (opeartion == "Insert")
        {
            document.getElementById("shenmeBT").style.display = "none";           //隐藏
            document.getElementById("table_ShenHe").style.display = "none";      //隐藏
            document.getElementById("ShenQR_RQ").style.display = "";                //显示

        }

 

 

 7.格式与动态绑定

(1)金额的显示格式:to_char(t.shenqje,'FM999,999,999,999,990.00')

(2)时间格式:DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”)

(3)dropdownlist,radiobuttonlist等控件一般用动态绑定,不要写死了,方便后期的维护(只需要修改数据库并且只需要很少的代码修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值