把上回的做一些改进

1.点击grid2的行改变TriggerBox1的值
                var v = $(item).find('.x-grid-cell-Name div.x-grid-cell-inner').text();
$("#<% =TriggerBox1.ClientID %>-inputCell").children("input").val(v);

  

通过JQ改的第一行是取值,第二行是赋值
2.改变TriggerBox1的值随时刷新grid2,做个模糊查询,只要绑定事件触发后台就可以了
            //TriggerBox1值改变事件简单过滤
F('<% =TriggerBox1.ClientID %>').on('change', function (field, newvalue, oldvalue) {
F.customEvent('TriggerBox1_change_' + newvalue);
});

  

问题又来了,第一个方法是行点击改变TriggerBox1,第二个方法是改变TriggerBox1后刷新列表,冲突了,想了想TriggerBox1获取焦点才触发改变事件。给出全部代码。
JS
        function showhide() {
F('<% =Grid2.ClientID%>').hide();
}
function tbxMyBox1_TriggerClick(t) {
F.customEvent('Grid2_bind_');
//先隐藏
F('<% =Grid2.ClientID%>').hide();
//位置设定样式
$('#Grid2_wrapper').css('top', $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().top + $("#<% =TriggerBox1.ClientID %>-triggerWrap").height());
$('#Grid2_wrapper').css('left', $("#<% =TriggerBox1.ClientID %>-triggerWrap").offset().left);
$('#Grid2_wrapper').css('position', 'fixed');
$('#Grid2_wrapper').css('z-index', '9999');
//显示方法
F('<% =Grid2.ClientID%>').show(F('<% =TriggerBox1.ClientID %>').getEl(), function () {
//页面的点击事件
$(document).click(function (e) {
var target = $(e.target);
//判断是否点击的位置,是gird和当前编辑的TriggerBox1就不变,点击其他位置就隐藏grid
//closest是一层层找上层元素,找不到返回0,可以在网上看看例子
//第二个判断是grid是否隐藏,显示的再触发隐藏
if (target.closest("#<% =Grid2.ClientID%>").length == 0 && !F('<% =Grid2.ClientID%>').isHidden() && target.closest("#<% =TriggerBox1.ClientID%>").length == 0) {
showhide();
}
});
});
}
var tbxMyBox1 = '<%= TriggerBox1.ClientID %>';
// 页面AJAX回发后执行的函数
F.ready(function () {
//浮动grid2能跑加上就不跑了
F('<% =Grid2.ClientID%>').draggable = false;
//编辑之前的事件
F('<% = Grid1.ClientID %>').on('beforeedit', function (editor, e) {
//列名
if (e.field == 'Name') {
//列号
window._selectrowIndex = e.rowIdx;
window._selectcellIndex = e.colIdx;
window.setTimeout(function () {
//新增input获取焦点事件,获取焦点后更改则重置grid
$("#<% =TriggerBox1.ClientID %>-inputCell").children("input").on('focus', function () {
window.TriggerBox1_down = 1;
});
}, 100);
}
return true;
});
//TriggerBox1值改变事件简单过滤
F('<% =TriggerBox1.ClientID %>').on('change', function (field, newvalue, oldvalue) {
//获取焦点后更改则重置grid,没获得焦点更改则为点击选项更改
if (window.TriggerBox1_down != 1) {
F.customEvent('TriggerBox1_change_' + newvalue);
}
window.TriggerBox1_down = 0;
});
//项点击事件
F('<%= Grid2.ClientID %>').on('itemmousedown', function (View, record, item, index, e) {
F('<% =Grid1.ClientID%>').f_cellEditing.cancelEdit();
F('<% =Grid1.ClientID%>').f_cellEditing.startEditByPosition({
row: _selectrowIndex, column: _selectcellIndex
});
var v = $(item).find('.x-grid-cell-Name div.x-grid-cell-inner').text();
$("#<% =TriggerBox1.ClientID %>-inputCell").children("input").val(v);
});
//行双击事件
F('<% =Grid2.ClientID%>').on('itemdblclick', function (grid, record, item, index) {
F.customEvent('Grid2_click_' + index);
F('<% =Grid2.ClientID%>').hide();
});
});

  

注意注释,都不是白写的,注意触发后台的方法F.customEvent
 
 
后台CS
        protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
{
//值改变事件
if (e.EventArgument.IndexOf("TriggerBox1_change_") >= 0)
{
//得到新输入的值
string newvalue = e.EventArgument.Split('_')[2].ToString();
DataTable table = GetDataTable();
DataRow[] dRows = table.Select("Name like '" + newvalue + "%'");
DataTable dtNew = table.Copy();
dtNew.Rows.Clear();
foreach (DataRow dr in dRows)
{
dtNew.Rows.Add(dr.ItemArray);
//dtNew.Rows.Add(dr);
}
//重新绑定表
Grid2.DataSource = dtNew;
Grid2.DataBind();
}
//双击事件
if (e.EventArgument.IndexOf("Grid2_click_") >= 0)
{
int index = Convert.ToInt32(e.EventArgument.Split('_')[2].ToString());
string name = Grid2.Rows[index].Values[Grid2.FindColumn("Name").ColumnIndex].ToString();
DataTable table = GetDataTable();
foreach (DataRow row in table.Rows)
{
if (row["Name"].ToString() == name)
{
string deleteScript = Grid1.GetDeleteIndexReference();
//string deleteScript = "";
JObject defaultObj = new JObject();
defaultObj.Add("Name", row["Name"].ToString());
defaultObj.Add("Gender", row["Gender"].ToString());
defaultObj.Add("EntranceYear", row["EntranceYear"].ToString());
defaultObj.Add("EntranceDate", row["EntranceDate"].ToString());
defaultObj.Add("AtSchool", (bool)row["AtSchool"]);
defaultObj.Add("Major", row["Major"].ToString());
PageContext.RegisterStartupScript(
deleteScript //删除当前行
+ Grid1.GetAddNewRecordReferenceByindex(defaultObj) //新增定义的行
+ "");//把窗体管理
}
}
}
//重新绑定事件
if (e.EventArgument.IndexOf("Grid2_bind_") >= 0)
{
DataTable table = GetDataTable();
Grid2.DataSource = table;
Grid2.DataBind();
}
}

  要改的地方还是grid显示的位置,好像是不好弄,凑合看吧,主要是方法。

 实例源码:CSDN 10分

ASP.NET-FineUI开发实践-8(二)的更多相关文章

  1. FineUI开源版(ASP.Net)开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  2. FineUI开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  3. FineUI开发实践

    ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...

  4. Xamarin.Android开发实践(二)

    原文:Xamarin.Android开发实践(二) 一.准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_qu ...

  5. 使用ADO实现BLOB数据的存取 -- ADO开发实践之二

    使用ADO实现BLOB数据的存取 -- ADO开发实践之二 http://www.360doc.com/content/11/0113/16/4780948_86256633.shtml 一.前言 在 ...

  6. ASP.NET-FineUI开发实践-16(二)

    实现那还差点,在事件参数里我传了一个boolall选中状态参数,这个参数由前台给的,RowSelect 传的是index 行号,就是改这,通过$符号来分开的, if (commandArgs.Leng ...

  7. ASP.NET-FineUI开发实践-13(二)

    1.加图标和事件 上次已经通过DataSimulateTreeLevelField属性控制了树节点的显示,不用看也知道就是给指定列数据前面加个图标的HTML 可以在SimulateTreeHeper类 ...

  8. ASP.NET-FineUI开发实践-4(二)

    在网上找了找,实验了一下window弹出和关闭的动画效果分享一下. 接上次的代码 default.js window_tips.animCollapse= true;//打开动画效果 window_t ...

  9. ASP.NET-FineUI开发实践-6(二)

    1.上回说到修改以前的会出现好几个5: 这是因为新增时是只新增到最后一行,所以点击选好了就跑到最后一行了,而且行号不会累积,只加到初始化的行号. 其实js里是有插入的,例子里可以插入到第一行,新增是a ...

随机推荐

  1. 不同浏览器对parseInt方法解析的不同

    parseInt方法的作用是将字符串转换为数字 当parseInt解析的时候只有0x和非0开头的数字,浏览器解析都一致,例如”0xA1”或 “9”. 只有当开头为0的时候才出现不同.IE,chrome ...

  2. 巧用C#做中间语言 实现Java调用.net DLL

    本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!” 环境与工具: ◆.net framework ...

  3. Jquery的外部链接和编写样式

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></ ...

  4. C#三种方式实现序列化(转)

    序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 序列化和反序列化最主要的作用有: ...

  5. struts1、ajax、jquery、json简单实例

    1.页面ajax代码,使用$.ajax,获得json对象后each $.ajax({ type:"GET", url:ctx + "/uploadImg.do" ...

  6. IOS--UIDatePicker 时间选择器 的使用方法详细

    IOS--UIDatePicker 时间选择器 的使用方法详细 // 主要有下面四种类型:   // 日期显示. // 日期和时间显示. // 时间显示. // 倒计时选择       // UIDa ...

  7. Info

    http://www.zhangchenghui.com/apple/1955.html http://www.36kr.com/p/133835.html http://news.163.com/1 ...

  8. DZY Loves Colors

    CF #446C:http://codeforces.com/problemset/problem/444/C 题意:给你n个数,大小从1到n,然后又两种操作,1 a b c表示把区间a b 更新为c ...

  9. 【HDOJ】1510 White Rectangles

    这个题目很好,变形的题目也很多.简单DP. /* 1510 */ #include <cstdio> #include <cstring> #include <cstdl ...

  10. 【HDOJ】1109 Run Away

    基础模拟退火. /* poj 1379 */ #include <iostream> #include <cstdio> #include <cstdlib> #i ...