主要目的 a. 掌握获取 GridPanel 当前行的各个字段值的方法
b. 掌握如何将前台数据传递到后台,并将后台操作结果返回到前台
c. 掌握如何获取和设置 button 和 textField 控件的文本值
主要内容
a. 我们先在页面中添加三个 ext 组件:store, menu,gridpanel
b. 将 gridpanel 的contextmenuID 设置为 menu 控件的ID, 从而为GridPanel 添加右键菜单
复制代码 代码如下:
<ext:Store ID="Store1" runat="server"
onbeforestorechanged="Store1_BeforeStoreChanged" >
<Reader>
<ext:JsonReader ReaderID="id" >
<Fields >
<ext:RecordField Name="id" Type="Int"></ext:RecordField>
<ext:RecordField Name="uid" Type="String"></ext:RecordField>
<ext:RecordField Name="uname" Type="String"></ext:RecordField>
<ext:RecordField Name="uage" Type="Int"></ext:RecordField>
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
此处的 ReaderID 可以不设置,设置了的话,就可以使用方法 GridPanel1.getSelectionModel().getSelected().id 来获取该行 id 字段所对应的值。
使用该方法的前提是在GridPanel 中设置其选择方式为行选择模式,代码会在后面贴出。Name 对应于数据库表中的字段名。
复制代码 代码如下:
<ext:Menu ID="Menu1" runat="server">
<Items>
<ext:MenuItem ID="MenuItem1" runat="server" Text="查看用户信息">
<Listeners>
<Click Fn="ShowUserInfo" />
</Listeners>
</ext:MenuItem>
<ext:MenuItem ID="MenuItem2" runat="server" Text="修改用户信息">
<Listeners>
<Click Fn="ShowUserInfo" />
</Listeners>
</ext:MenuItem>
<ext:MenuItem ID="MenuItem3" runat="server" Text="添加用户信息">
<Listeners>
<Click Fn="ShowUserInfo" />
</Listeners>
</ext:MenuItem>
<ext:MenuItem ID="MenuItem4" runat="server" Text="删除用户信息">
<Listeners>
<Click Fn="DeleteUserInfo" />
</Listeners>
</ext:MenuItem>
</Items>
</ext:Menu>
效果如下:
c. 将 gridPanel 的 storeID 设为 store 控件的 ID, 为 Gridpanel 添加数据源
GridPanel 源码如下:
复制代码 代码如下:
<ext:GridPanel ID="GridPanel1" runat="server" ContextMenuID="Menu1" AutoHeight="true" Width="400px"
AutoDataBind="true" StoreID="Store1">
<ColumnModel ID="ctl10">
<Columns>
<ext:Column DataIndex="id" Header="用户编号">
<PrepareCommand Args="grid, record, rowIndex, columnIndex, value" />
</ext:Column>
<ext:Column DataIndex="uid" Header="用户名">
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand>
</ext:Column>
<ext:Column DataIndex="uname" Header="用户昵称">
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand>
</ext:Column>
<ext:Column DataIndex="uage" Header="用户年龄">
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand>
</ext:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel runat="server" ID="ctl09"></ext:RowSelectionModel>
</SelectionModel>
<LoadMask ShowMask="true" Msg="数据正加载中..." />
<Listeners>
<CellClick Fn="ShowUserInfo" />
</Listeners>
</ext:GridPanel>
此处要作几点说明
首先,cellclick 事件传递的参数可以根据 PrepareCommand 中 Args 设置的参数传递,比如 grid, command, record, row,col, value
其次此处的 SelectionModel 节点内定要使用 RowSelectionModel
d. 前台 extjs 脚本如下:
复制代码 代码如下:
function ShowUserInfo(menu, e) {
var id = GridPanel1.getSelectionModel().getSelected().id;//此处的 id 为 jsonreader 中的 readerID所设置的值
var record = GridPanel1.getSelectionModel().getSelected(); //获取当前选中的整条记录,前提是必须设置为行选择模式
//查看详细信息
if (menu.id == 'MenuItem1') {
openUserInfoWindow(record, 0); //在 objectInfo.ascx 页面中定义
}
//修改信息
else if (menu.id == 'MenuItem2') {
openUserInfoWindow(record, 1);
}
//添加信息
else if (menu.id == 'MenuItem3') {
openUserInfoWindow(record, 2);
}
else {
}
}
对于该脚本,有一点要说明,就是其中要调用 openUserInfoWindow 方法,该方法在是一个用户控件的页面中定义的,本页使用该控件以后,便可调用该方法。
空间页面源码如下:
说明一点: <%= ctrID.ClientID> 用户获取服务器端组件对象
复制代码 代码如下:
function openUserInfoWindow(record,id) {
<%= Button2.ClientID %>.hide(null);
<%= txtID.ClientID %>.setValue(record.data.id);
<%= txtName.ClientID %>.setValue(record.data.uid);
<%= txtNC.ClientID %>.setValue(record.data.uname);
<%= txtAge.ClientID %>.setValue(record.data.uage);
if(id==1)
{
<%= Button1.ClientID %>.setText('修改'); //对于 button, 取值时用 text,设置时用 setText();
<%= txtID.ClientID %>.hide(null);
<%= Button2.ClientID %>.show(null);
}
if(id==0)
{
}
if(id==2)
{
<%= txtID.ClientID %>.setValue('');
<%= txtName.ClientID %>.setValue('');
<%= txtNC.ClientID %>.setValue('');
<%= txtAge.ClientID %>.setValue('');
<%= txtID.ClientID %>.hide(null);
<%= Button1.ClientID %>.value="添加";
}
<%= Window1.ClientID %>.show();
}
删除用户的代码如下:
复制代码 代码如下:
function DeleteUserInfo() {
Ext.Msg.confirm('提示', '确定删除用户?', function(btn) {
if (btn == 'yes') {
var record = GridPanel1.getSelectionModel().getSelected();
GridPanel1.getStore().remove(record);//该方法若写在后台删除成功后的回调函数中时,则 record 为 null
//用户可能只是在 gridpanel 上点击,但并没有选择确定的行,此时 record 值为 null
if (record == null) {
Ext.Msg.alert('提示', '请选择某一确定的记录!');
return;
}
Coolite.AjaxMethods.DeleteUserInfo(record.data.id.toString(), {
success: function() {
Ext.Msg.alert('提示', '删除成功!');
}
});
}
else {
return;
}
});
}
请特别注意 Coolite.AjaxMethods.DeleteUserInfo 方法的使用,第一个参数是在前台获取,并传递到服务器端的参数,第二个是回调函数。
后台删除代码实现如下:
复制代码 代码如下:
[AjaxMethod]
public void DeleteUserInfo(string id)
{
string deletestring = "delete from T_User where id=" + id;
sqldb.ExecuteUpdate(deletestring);
}
特别注意
本页面的添加,修改功能都未实现,只提供了一个模式,不过使用和删除时是一样的。
学习心得
如果有不知道什么事件传递的参数个数和类型,可以随便写个错误的方法,然后调试的时候去分析有意义的参数。
疑问:当实现删除时,实现刷新时,实现修改时,我不用重新从数据库读取数据后再绑定到 Store, 而是通过刷新 Store 或者 GridPanel 实现
相关推荐:
AI免费免登录:轻松体验人工智能的魔力,无需繁琐注册,华为AI音箱2音质如何
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
SEO子-为你的网站注入流量的秘密武器,麻城网站网址优化
360刷排名工具选哪家?揭秘2025年最强排名优化工具!,ai写作网站哪个好一点
AI写作免费一键生成下载,助您轻松创作!
ChatGPT点不了?背后的真相与解决方法,ai.520523
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
ChatGPT登录503错误?轻松解决,快速恢复畅享智能体验!,ai怎么加植物材质效果
SEO自己:打造属于你的数字营销利器,微信裂变营销推广软件
摘要AI生成:高效工作的新时代利器
ChatGPT为什么访问不了?全面解析及解决方案,ai首页设计
什么是seo网络推广seo顾问,seo网络推广员 ,ai20170119
360ai答题-赋能教育,开启智能学习新纪元,ai 果汁
ChatGPT出现报错503?这些解决办法你必须知道!,粉墨ai说唱
ChatGPT不能打开EL?揭秘这一困扰背后的真相与解决方案,ai被动房
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
seo点击工具,seo排名点击软件推荐 ,ai狂躁
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
ChatGPT安装包Windows版-让智能助手触手可得,q和ai
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
seo规范是什么意思,seo包括哪些内容 ,AI智能破解
SEO能够助力网站流量增长,提升品牌竞争力,Seo网站排名原理
OpenAI银联支付-未来支付新体验,安全便捷全新升级,医学加ai
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
ChatGPT出现错误503?你需要知道的解决方案和应对策略,ai拉伸字效
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
SEO手段:提升网站流量的制胜法宝,idc网站怎么推广
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
ChatGPT免费版每天提问有次数限制吗?揭秘如何高效使用AI助手!,机甲ai手绘
ChatGPT为什么网址打不开?原因分析与解决方法,文档审核ai
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
ChatGPT异常了:人工智能的极限与突破,ai and ethics
SEO人工优化-让你的网页轻松登上搜索引擎首页,ai主母
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
SEO快速优化排名:助你网站跃升搜索引擎首页,ai彩虹立体9怎么做
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
AI人工智能文章生成平台,释放创作无限可能
seo经理做什么的,seo经理招聘 ,盲人ai眼镜
SEO经营:助力企业腾飞的秘密武器,靖边百度关键词排名
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
优化原理:提升效率、创新突破的核心法则,印刷包装推广有哪里网站
SEO新闻:2025年最新趋势与最佳实践,你不可错过的SEO战略,郑州网络营销推广的优势
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
ChatGPT内部HTTP接口文档-为开发者提供高效便捷的AI服务接入方式,安屿ai
WP原创:打造属于你的独特网站,从这里开始!,一个网站推广一个月需要多少钱