遍历TextBox,HtmlInputText,GridView;定制自己的,操作日志 ASP.NET

第一次发表文章,可能略显不成熟,呵呵。希望得到推荐

主体思想:定制自己的操作日志。(多用户的业务平台)

 

既然提到操作日志,根据实际情况不光光记录一些普通的记录,还得记录一些,比如:用户,用户ID,操作类型,操作保存的值,客户端IP,客户端计算机名,一些自己需要的字段,操作时间等等。

 

其实网上很多关于日志的文章,但是基本上都是公用的,想打造自己的还是自己写的好~

 

不要把这个操作日志想的很神秘,其实就是收集各种数据,然后INSERT即可。

 

记录怎么收集?

 

下面就详细讲解一下,仅仅说的是操作记录,并不是错误记录

 

public void dblogobj(string SQLType)//复制到.CS文件内,基本采用见名之意的命名方法+驼峰命名法
    {
        string TextValue = "";
        string InputText = "";
        //string DdlValue = "";//下拉框其他人可以自己写,不要等现成的哦

        string GvValue = "";

        for (int i = 0; i < Page.Controls.Count; i++)
        {

            foreach (System.Web.UI.Control control in Page.Controls[i].Controls)
            {


                if (control is TextBox)//遍历所有TextBox
                {

                    TextValue = TextValue + (control as TextBox).Text + "|";
                }

                if (control is HtmlInputText)//遍历所有HTML类型的TEXT
                {
                    InputText = InputText + (control as HtmlInputText).Value + "|";
                }
                if (control is GridView)//遍历GridView,这是亮点,研究了好久才弄明白怎么遍历,重点难点在这里!!!!这里取的是当

//前你看到的数据!跟你绑定不绑定数据,没有关系!你看到啥,就遍历啥~!明白了吧~也就是说隐藏的字段遍历不到的!
                {
                    for (int X = 0; X < (control as GridView).Rows.Count; X++)
                    {
                        for (int Y = 0; Y < (control as GridView).Rows[X].Cells.Count; Y++)
                        {


                            GvValue = GvValue + (control as GridView).Rows[X].Cells[Y].Text.ToString()+"|";
                        }
                       
                    }
                   
 
                }//题外话:从上面的形式可以看出,想要LABEL,就换成LABEL即可,想要DDL就换成DDL


            }
        }


        SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);//实例化地图


        string IP = HttpContext.Current.Request.UserHostAddress;获取客户端IP


        string PcName = HttpContext.Current.Request.LogonUserIdentity.Name;获取客户端计算机名


        string kongjianValue = "TextBox为:" + TextValue + ">>HTML的text值:" + InputText + ">>GV值:" + GvValue;//把前面的值整合在一起

 

        UserID = (int)Session["UserID"];//取Session

        User U = new User(UserID);//我这里是实例化的我原有的USER类,这里其他人可以自己想办法
        string FNodeName = currentNode.Url.ToString() + ">>" + currentNode.ParentNode.Title.ToString() + ">>" + currentNode.Title.ToString();//这里取的是当前地图节点信息,比如URL,标题等

//到这里信息收集完毕,再根据自己的需要,写一些其他的需要收集的信息即可
        DBlog log = new DBlog(U.UserID, U.UserName, SQLType, kongjianValue, FNodeName, PcName, IP, TID.ToString());//注释:TID是我程序内的一个编号而已;收集完信息后,这里就把收集来的信息传到DBLOG类中,这个类里面只有一个接收参数,然后INSERT到数据库的简单的不能再简单的语句了,例如:inser into 数据库名.dbo.S_DBLog(参数1,参数2,参数3……),注意一点,操作日志不可能有UPDATE!永远都是INSERT!

    }

 

 

 

//

 

结束了

 

然后需要用的时候,在相应的按钮下调用即可

 

 

比如在添加按钮的事件中,这么写:dblogobj("Add");

修改的按钮: dblogobj("UP");

返回的按钮:dblogobj("back");

 

 

 

可能有人会问,为什么返回按钮也要加,为了以防万一,应用到实际的时候就可能会用到了~

 

 

忘记说了,这样记录操作日志,可能文件会很大,记得要单独建立一个数据库哦~别放在实际的使用中的数据库。别忘记数据库内建立一个数据插入时间字段,不用在网站的.CS文件内添加,直接在数据库的表内在默认值上面(getdate())即可~呵呵~

 

 

这样就会记录下所有人,所有的操作记录了!除了查询的记录(没人记录这个吧?)

 

 

 

到时候 数据不对了 哼哼……

 

谁敢装不知道!谁修改的一下就知道!并且修改过几次也都可以知道的!

 

 

 

 

上一张数据库的表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值