桐乡网站设计,化妆品网站建设实施方案,江苏城乡建设部网站首页,重庆建设工程信息网查询系统163邮件一个比较爽的功能就是可以通过多选邮件#xff0c;拖动到左侧的文件夹列表#xff0c;实现邮件归类的功能关于我对拖动分配的实现将在后文写出这里说说在CheckBox的选择中做得尝试和实现的效果、方法1。点击表格Title实现全选每行这个早有人做了,我这里借鉴一下 一块贴…163邮件一个比较爽的功能就是可以通过多选邮件拖动到左侧的文件夹列表实现邮件归类的功能关于我对拖动分配的实现将在后文写出这里说说在CheckBox的选择中做得尝试和实现的效果、方法1。点击表格Title实现全选每行这个早有人做了,我这里借鉴一下 一块贴出来方便大家看js事件 function clkAll(myTable,ck){ var tb document.getElementById(myTable); var objs1 tb.getElementsByTagName(TR); for(var i1; iobjs1.length; i) { if (objs1[i].getElementsByTagName(TD).item(0).getElementsByTagName(INPUT).length0) objs1[i].getElementsByTagName(TD).item(0).getElementsByTagName(INPUT).item(0).checked ck.checked; } lastChecknull; RefreshRowStates(tb); RefreshRowColor(tb);} 后台GridView调用js:asp:TemplateField HeaderTemplate input idCheckbox2 typecheckbox onclickclkAll(grvProjList,this) runatserver / /HeaderTemplate ItemTemplate asp:CheckBox IDchbox runatserver / /ItemTemplate 2。点击GridView每行实现选中当前行按住shift实现多选在JS里事件有个Bubble过程大致就是元素的事件click等会先触发当前元素的事件然后触发上级元素事件body onclickalert(1)input onclickalert(2)/body 点击文本框将依次提示 2 ,1因此点击GridView每行实现选中当前行只要考虑对TR元素进行onclick事件处理即可完整的js代码如下function clk(obj,event) { var el event.target?event.target:event.srcElement; if (el.type ! checkbox el.tagName ! A) { obj.getElementsByTagName(TD).item(0).getElementsByTagName(INPUT).item(0).checked ! obj.getElementsByTagName(TD).item(0).getElementsByTagName(INPUT).item(0).checked } mov(obj); if (event.shiftKey lastCheck!null) { var tag 0; lastCheck.childNodes[0].childNodes[0].checked obj.childNodes[0].childNodes[0].checked; mov(lastCheck); mou(lastCheck); for(var i1; iobj.parentNode.childNodes.length; i) { if (obj.parentNode.childNodes[i] obj || obj.parentNode.childNodes[i] lastCheck) { tag ; continue; } if (tag 1) { obj.parentNode.childNodes[i].childNodes[0].childNodes[0].checked obj.childNodes[0].childNodes[0].checked; mov(obj.parentNode.childNodes[i]); mou(obj.parentNode.childNodes[i]); } if (tag 2) break; } } else { lastCheckobj; } RefreshRowStates(obj.parentNode.parentNode);} 上面的代码有两个if第一个判断触发事件的元素是不是checkBox或者链接元素前者是因为本身就是选中事件后者是因为链接应该是进行其他操作而不是选择当前行第二个链接是用来实现对按住shift进行多选的实现毕竟一个个点太麻烦了163邮箱的shift多选逻辑我没看大明白于是按照windows的shift多选大致做的记住按shift之前的点击行按住shift点击新行后两者之间的所有行按照最后点击新行的新状态copy其中的mov和mou是前文提到的刷新选中颜色的函数RefreshRowState先不用管是后面用来统计选中状态的 就是“您选择了**条数据”后台的代码变成了 protected void grvProjList_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType DataControlRowType.DataRow) { if ((e.Row.RowIndex % 2) 0) { e.Row.Attributes.Add(originalcolor, System.Drawing.ColorTranslator.ToHtml(grvProjList.RowStyle.BackColor)); e.Row.Attributes.Add(onmouseout, mou(this, System.Drawing.ColorTranslator.ToHtml(grvProjList.RowStyle.BackColor) )); } else { e.Row.Attributes.Add(originalcolor, System.Drawing.ColorTranslator.ToHtml(grvProjList.AlternatingRowStyle.BackColor)); e.Row.Attributes.Add(onmouseout, mou(this, System.Drawing.ColorTranslator.ToHtml(grvProjList.AlternatingRowStyle.BackColor) )); } e.Row.Attributes.Add(onmouseover, mov(this)); e.Row.Attributes.Add(onclick, clk(this,event)); e.Row.Attributes[style] Cursor:hand; } } 对于按住Ctrl实现多选没有必要实现因为不同于windows的单击单选gridView本来就是按住ctrl的效果了(单击增加、删除选择)转载于:https://www.cnblogs.com/calmzeal/archive/2007/07/29/835416.html