您的位置:程序门 -> .net技术 -> asp.net



gridview中的javascript问题.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


gridview中的javascript问题.[已结贴,结贴人:wake00544]
发表于:2007-04-16 14:01:10 楼主
请教个问题.
我有个gridview,里面有四个模板列.当点击每一行的 "编辑 "按钮的时候,这一行的三个模板列由label变成textbox.我将第三个textbox做了个onfocus,当这第三个textbox获得焦点的时候,将前两个textbox的数值相乘.请问这个怎么做啊.

      protected   void   gridview1_rowediting(object   sender,   gridviewediteventargs   e)
        {
                gridview1.editindex   =   e.neweditindex;
                textbox   t1   =   (textbox)gridview1.rows[e.neweditindex].findcontrol( "heji ");
                t1.attributes.add( "onfocus ",   "javascript:var   obj   =   window.event.srcelement;obj.value   = "   +   convert.toint32(((textbox)gridview1.rows[e.neweditindex].findcontrol( "shuliang ")).text)*   convert.todecimal(((textbox)gridview1.rows[e.neweditindex].findcontrol( "price ")).text)*   +   "; ");
        }

我这样做,它好像会在变成textbox的时候就直接算出 "合计 "的数,然后在这个文本框得到焦点的时候直接付上,而不是我在点了合计文本框时,再将这两个相乘.请问这个应该怎么写.
如果不用这种方法还有其它方法可以完成这个功能吗?
发表于:2007-04-16 14:04:231楼 得分:0
帮顶的
发表于:2007-04-16 15:02:072楼 得分:10
给文本框设置焦点事件
使用javascript中的this.parentnode.parentnode.cells[index].childnode[index]获取其它列的文本框对象,不就可以了!
发表于:2007-04-16 15:09:293楼 得分:5
在rowdatabound事件里面写类似你那样的代码

建议你将这个js方法放在前台页面!
然后后台事件把控件的clientid传给js方法就可以使用document.getelementbyid(id)来定位控件并进行数学运算
发表于:2007-04-17 09:17:514楼 得分:0
给文本框设置焦点事件
使用javascript中的this.parentnode.parentnode.cells[index].childnode[index]获取其它列的文本框对象,不就可以了!

请问:parentnode.parentnode.cells[index].childnode[index]这是什么意思?是dategrid里的哪个对象?
发表于:2007-04-17 09:56:175楼 得分:0
在rowdatabound事件里面写类似你那样的代码

建议你将这个js方法放在前台页面!
然后后台事件把控件的clientid传给js方法就可以使用document.getelementbyid(id)来定位控件并进行数学运算


我在gridview的模板列这样做的: <asp:textbox   id= 'shuliang <%#   eval( "id ")   %> '     runat= "server "   />
报错.说textbox的id必须是个定值,不允许绑定.
请问我该怎么办呢?
发表于:2007-04-17 14:30:586楼 得分:0
自己顶一下,请帮帮忙.
发表于:2007-04-17 14:57:247楼 得分:0
asp.net(c#)群37926712,欢迎加入沟通学习,gridview很多待研究哦,发现那些模板编辑就很有研究,
发表于:2007-04-17 15:19:138楼 得分:5
protected   void   gridview1_rowdatabound(object   sender,   gridviewroweventargs   e)
        {
                if   (e.row.rowtype   ==   datacontrolrowtype.datarow)
                {  
               
                }
        }

在rowdatabound里加事件。
发表于:2007-04-17 15:21:529楼 得分:0
protected   void   gridview1_rowdatabound(object   sender,   gridviewroweventargs   e)
        {
                if   (e.row.rowtype   ==   datacontrolrowtype.datarow   &&   e.row.rowstate=datacontrolrowstate.edit)
                {  
                textbox   t1   =   (textbox)gridview1.rows[e.neweditindex].findcontrol( "heji ");
t1.attributes.add( "onfocus ",   "javascript:var   obj   =   window.event.srcelement;obj.value   = "   +   convert.toint32(((textbox)gridview1.rows[e.neweditindex].findcontrol( "shuliang ")).text)*   convert.todecimal(((textbox)gridview1.rows[e.neweditindex].findcontrol( "price ")).text)*   +   "; ");
                }
        }

判断一下是编辑的时候再加
发表于:2007-04-17 16:27:1410楼 得分:0
我试过了.这样它只会在这一行加载成 "编辑 "状态下的时候先计算出结果,并在那个文本框得到焦点的时候填进去这个事先已经算好了的数.而不是在文本框得到焦点的时候再计算,这个数应该在客户端计算的,而不是在服务器端,哪位大虾能帮一下我.
发表于:2007-04-17 16:57:2911楼 得分:0
我的问题解决了.
                objheji.value=objheji.parentnode.parentnode.cells[7].childnodes[0].value*objheji.parentnode.parentnode.cells[8].childnodes[0].value*objheji.parentnode.parentnode.cells[6].childnodes[0].value;

非常感谢各位的帮助.


快速检索

最新资讯
热门点击