基于WebGrid的文本框下拉选择
来源:互联网 发布:mac wav 转 mp3 编辑:程序博客网 时间:2024/06/10 07:28
这个东西是基于我去年写的WebGrid开发的一个文本框下拉选择组件,使用时不需要改任何东西,只需要将需要下拉选择的文本框传入,并且完成获取数据方法就可以了。这个东西需要WebGrid支持(还有jquery 1.3以上),过几天我会上传最新的WebGrid。
下面是对象实现
function ShowDropDown(control, dataKey) { var grid = null; var p = this; this.Control = control; this.Valve = 1; this.ShowCount = 10; this.DataSource = []; this.DataKey = dataKey; this.DivContainer = $("<div style=\"position: absolute;\"></div>"); this.GridContainer = $(Global.StringFormat("<table style=\"background-color: White;\"><tr><td>KeyWord</td></tr><tr><td bind=\"{Name:'{0}',BindType:'innerText'}\" align=\"left\"></td></tr></table>", [this.DataKey])); this.DivContainer.append(this.GridContainer); this.DivContainer.insertBefore(this.Control); this.Init = function () { grid = new Grid(this.GridContainer); grid.ShowTitle = false; grid.AutoPage = false; grid.ShowPageInfo = false; grid.AllowRowSelect = true; grid.RowSelectStyle = "SelectedItemSearch"; grid.PreSelectRow = function (tr) { var selectItme = Global.GetData(tr); $.each(selectItme, function (index, item) { p.Control.val(item); }); } this.Control.bind("propertychange", function () { var txtValue = $(this).val(); p.DivContainer.hide(); if (txtValue.length > 0) { p.ValueChange(true); p.DivContainer.show(); } }); grid.Init(); var top = this.GetTop(0, this.Control[0]) + this.Control.attr("offsetHeight"); var left = this.GetLeft(0, this.Control[0]); this.DivContainer.css("top", top); this.DivContainer.css("left", left); this.DivContainer.hide(); } this.ReadData = function (func) { } this.IsValue = function (item) { var txtValue = this.Control.val(); return Global.StartWith(item, txtValue); } this.ValueChange = function (nextFind) { var bindDataValue = []; for (var i = 0; i < this.DataSource.length; i++) { var item = this.DataSource[i]; if (bindDataValue.length >= this.ShowCount) { this.BindData(bindDataValue); return; } if (this.IsValue(item)) { bindDataValue.push(item); } } if (nextFind && bindDataValue < this.Valve) { this.ReadData(this.ExecBind); return; } this.BindData(bindDataValue); } this.ExecBind = function (data) { p.DataSource = data; p.ValueChange(false); } this.BindData = function (data) { grid.Clear(); grid.DataSource = data; grid.DataBind(); } this.GetLeft = function (left, item) { if (Global.IsNull(item)) { return left; } left += item.offsetLeft; return this.GetLeft(left, item.offsetParent); } this.GetTop = function (top, item) { if (Global.IsNull(item)) { return top; } top += item.offsetTop; return this.GetTop(top, item.offsetParent); }}
下面是调用例子,有一个名为txtKeyWord的文本框
<table> <tr> <td align="right" bgcolor="#fafbfc"> <input id="txtKeyWord" maxlength="480" style="width: 120px"/> </td> </tr> </table>
创建下拉对象
//创建一个下拉对象第一个参数就是你的文本框对象,第二个是你要绑定实体中那个属性 var dropDownItem = new ShowDropDown($("#txtKeyWord]"), "Keyword"); dropDownItem.ShowCount = 10; //最大显示数量 dropDownItem.Valve = 1; //最小阀值,只有符合条件的现有数据少于此值才会重新向数据库请求数据 dropDownItem.Init(); //这个方法必须实现,因为实体会一次下载多条记录,但显示只会显示前N条,且只有在内存中数据列表 //少于阀值时才会重新连接数据库去拿数据 dropDownItem.IsValue = function (item) { //item 实体中要比较的值,用这个值可文本框中现有的字符比较已确认是否为需要的内容 } //这个方法必须实现此方法用来向数据库获取数据 dropDownItem.ReadData = function (func) { //func 因为获取数据可能是异步的,所以获取完数据后需要调用func(data)方法将获得的数据传入 //func 有一个参数data,就是你要传给下拉对象的数据结合 }
调用后直接打开页面就有下拉了,非常方便也不需要修改原有程序。
- 基于WebGrid的文本框下拉选择
- 文本框自动下拉选择提示
- 下拉框级联选择框,下拉框的隐藏于文本框的隐藏
- 选择下拉框"其他" 弹出一个文本框
- 下拉框选择赋植给文本框
- 网页中文本框下拉选择输入与自动提示功能的实现
- 基于jquery封装的颜色下拉选择框
- 基于java,selenium选择下拉框的某一个选项
- 可输入的下拉文本框.
- webgrid的使用:(一)、单某一行时,将该行的关键字赋给一个文本框,以作其它用。
- 自定义控件 实现文本框输入模仿下拉框选择功能
- 关于文本框内容的选择
- JS开发的WebGrid控件
- 实现有下拉列表的文本框
- 实现下拉文本框的输入提示功能
- 下拉选择框的介绍
- 实现google的下拉选择
- 可以选择的下拉框
- MVC设计模式概览
- android usb挂载分析----vold启动
- Nutch如何读取CrawlDb中的<Text,CrawlDatum>键值对
- 7月份37个新鲜的jQuery图片内容滑块和幻灯片出炉啦
- PowerManager.WakeLock请求锁时强制打开Screen和keyboardlight导致按Power键,系统也不会进Sleep问题!
- 基于WebGrid的文本框下拉选择
- 远程下载音乐为手机铃声核心代码(RingtoneManager与铃声存放路径)
- apache 配置 ssl
- 黑马程序员_sql一些知识点总结
- android usb挂载分析---vold处理内核消息
- Lua性能优化技巧
- oracle row_number()函数的小实例
- windows2003升级至centos5.7 后 ORA-12519: TNS:no appropriate service handler found
- 算法导论第十章例题-栈的实现