|
|
Posted on 2007-11-21 17:35 韦小宝是我的老乡 阅读(44061) 评论(105) 编辑 收藏
最近园子里有很多朋友关心ExtJS,我最近写了一个项目管理工具用到ExtJS,我结合.NET写了个关于Grid实现的一个实例供需要的朋友参考。
本实例开发环境是:Windows XP + Sql Server 2005 + IIS6+VS 2008 Beta2(.NET Framework3.5)
实现步骤:
1.取数据源
这里是从数据库里读取数据生产JSON的方式供ExtJS Grid调用.
(1)用Scott Guthrie提供的生产JSON格式的类,这篇文章可以访问:http://weblogs.asp.net/scottgu/archive/2007/10/01/tip,它的译文请访问: http://blog.joycode.com/scottgu/archive/2007/10/10/109268.aspx
建一个类文件JSONHelper.cs,代码如下:
 JSONHelper.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Web.Script.Serialization;
5 namespace Web.Components
6  {
7 public static class JSONHelper
8 {
9 public static string ToJSON(this object obj)
10 {
11 JavaScriptSerializer serializer = new JavaScriptSerializer();
12 return serializer.Serialize(obj);
13 }
14
15 public static string ToJSON(this object obj, int recursionDepth)
16 {
17 JavaScriptSerializer serializer = new JavaScriptSerializer();
18 serializer.RecursionLimit = recursionDepth;
19 return serializer.Serialize(obj);
20 }
21 }
22 }
23
(2)利用LINQ读取数据记录,关于LINQ方面的文章参考Scott Guthrie的LINQ to SQL系列文章
为了方便ExtJS AJAX方式的调用,这里建一个ASPX页面,起名为:ProjectBaseInfo.aspx,代码如下:
 ProjectBaseInfo.aspx.cs
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Web.UI.HtmlControls;
12 using System.Xml.Linq;
13 using BusinessObject.Projects; //dbml文件的引用
14 using System.Data.OracleClient;
15 using Database;
16 using Web.Components;
17 namespace Web.Projects.JsonDataSource
18  {
19 public partial class ProjectBaseInfo : System.Web.UI.Page
20 {
21 protected string strJsonSource=string.Empty;
22 protected void Page_Load(object sender, EventArgs e)
23 {
24 int start=int.Parse(Request.Form["start"]+""); //分页需要limit,start是mysql里用的(或取当页开始的记录标识编号)
25 int limit = int.Parse(Request.Form["limit"] + ""); //或取每页记录数
26 string sort = Request.Form["sort"] + ""; //或取排序方向
27 string dir = Request.Form["dir"] + ""; //或取所要排序的字段名
28 GetJsonSouceString(start,limit,sort,dir);
29 }
30
31 private void GetJsonSouceString(int start,int limit,string sort,string dir)
32 {
33 ProjectBaseInfoDataContext db = new ProjectBaseInfoDataContext();
34 var query = from p in db.PROJECT_BASE_INFOs
35 select new { p.PROJECT_NO, p.PROJECT_NAME, p.PROJECT_DEPT_NO, p.PROJECT_MANAGER, p.PROJECT_CURRENT_STATUS, PROJECT_START_DATE = p.PROJECT_START_DATE + "", PROJECT_FINISH_DATE = p.PROJECT_FINISH_DATE + "", PROJECT_REAL_START_DATE = p.PROJECT_REAL_START_DATE + "", PROJECT_REAL_FINISH_DATE = p.PROJECT_REAL_FINISH_DATE + "", p.PROJECT_ALIAS, p.PROJECT_TYPE, p.PROJECT_LEADER, p.PROJECT_MEMO }; //类似PROJECT_REAL_FINISH_DATE=p.PROJECT_REAL_FINISH_DATE+"的处理了Grid中日期格式显示的问题
36 排序字段和排序方向#region 排序字段和排序方向
37 if (sort != "" && dir != "")
38 {
39 switch (sort)
40 {
41 case "PROJECT_NO":
42 if (dir == "ASC")
43 {
44 query = query.OrderBy(p => p.PROJECT_NO);
45 }
46 else
47 {
48 query = query.OrderByDescending(p => p.PROJECT_NO);
49 }
50 break;
51 case "PROJECT_NAME":
52 if (dir == "ASC")
53 {
54 query = query.OrderBy(p => p.PROJECT_NAME);
55 }
56 else
57 {
58 query = query.OrderByDescending(p => p.PROJECT_NAME);
59 }
60 break;
61 case "PROJECT_DEPT_NO":
62 if (dir == "ASC")
63 {
64 query = query.OrderBy(p => p.PROJECT_DEPT_NO);
65 }
66 else
67 {
68 query = query.OrderByDescending(p => p.PROJECT_DEPT_NO);
69 }
70 break;
71 case "PROJECT_MANAGER":
72 if (dir == "ASC")
73 {
74 query = query.OrderBy(p => p.PROJECT_MANAGER);
75 }
76 else
77 {
78 query = query.OrderByDescending(p => p.PROJECT_MANAGER);
79 }
80 break;
81 case "PROJECT_CURRENT_STATUS":
82 if (dir == "ASC")
83 {
84 query = query.OrderBy(p => p.PROJECT_CURRENT_STATUS);
85 }
86 else
87 {
88 query = query.OrderByDescending(p => p.PROJECT_CURRENT_STATUS);
89 }
90 break;
91 case "PROJECT_START_DATE":
92 if (dir == "ASC")
93 {
94 query = query.OrderBy(p => p.PROJECT_START_DATE);
95 }
96 else
97 {
98 query = query.OrderByDescending(p => p.PROJECT_START_DATE);
99 }
100 break;
101 case "PROJECT_FINISH_DATE":
102 if (dir == "ASC")
103 {
104 query = query.OrderBy(p => p.PROJECT_FINISH_DATE);
105 }
106 else
107 {
108 query = query.OrderByDescending(p => p.PROJECT_FINISH_DATE);
109 }
110 break;
111 case "PROJECT_REAL_START_DATE":
112 if (dir == "ASC")
113 {
114 query = query.OrderBy(p => p.PROJECT_REAL_START_DATE);
115 }
116 else
117 {
118 query = query.OrderByDescending(p => p.PROJECT_REAL_START_DATE);
119 }
120 break;
121 case "PROJECT_REAL_FINISH_DATE":
122 if (dir == "ASC")
123 {
124 query = query.OrderBy(p => p.PROJECT_REAL_FINISH_DATE);
125 }
126 else
127 {
128 query = query.OrderByDescending(p => p.PROJECT_REAL_FINISH_DATE);
129 }
130 break;
131 default:
132 break;
133 }
134 }
135 #endregion
136
137 int iCount = query.Count(); //所要记录数
138 int PageNum = start / limit; //共有页数
139 int PageSize = limit;
140 query = query.Skip(PageSize * PageNum).Take(PageSize); //当前页记录
141 string JsonSource= query.ToJSON(); //当前页记录转成JSON格式
142 strJsonSource = @"{""totalCount"":"""+iCount+"";
143 strJsonSource = strJsonSource + @""",""data"":" + JsonSource + "}"; //Grid的分页区显示所有记录数增加totalCount信息
144 }
145 }
146 }
147
ProjectBaseInfo.aspx中的代码为:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProjectBaseInfo.aspx.cs" Inherits="Web.Projects.JsonDataSource.ProjectBaseInfo" %>
<%=strJsonSource %>
至此,已完成了取数据源。
2.页面客户端
(1)下载ExtJS库,请访问:http://extjs.com/。
(2)在你的WEB工程中建一个ExtJS目录。把下载的包里的目录都COPY进来(为了简便起见)。
(3)建一个ProjectLists.html页面,代码如下:
 ProjectLists.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head runat="server">
4 <title>项目一览表</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
6 <link rel="stylesheet" type="text/css" href="../Resources/css/ext-all.css" />
7 <!-- GC -->
8 <!-- LIBS -->
9 <script type="text/javascript" src="../Adapter/ext/ext-base.js"></script>
10 <!-- ENDLIBS -->
11 <script type="text/javascript" src="../Script/ext-all.js"></script>
12
13 <script type="text/javascript" src="../Script/GridForProjectLists.js"></script>
14
15 <link rel="stylesheet" type="text/css" href="../CSS/Grid.css" />
16 <link rel="stylesheet" type="text/css" href="../CSS/Forms.css" />
17 <link rel="stylesheet" type="text/css" href="../CSS/Combos.css" />
18 <!-- Common Styles for the Projects -->
19 <style type="text/css">
20 body .x-panel
21 { }{
22 margin-bottom: 20px;
23 }
24 .icon-grid
25 { }{
26 background-image: url(../Images/icons/grid.png) !important;
27 }
28 #button-grid .x-panel-body
29 { }{
30 border: 1px solid #99bbe8;
31 border-top: 0 none;
32 }
33 .add
34 { }{
35 background-image: url(../Images/icons/add.gif) !important;
36 }
37 .search
38 { }{
39 background-image: url(../Images/icons/plugin.gif) !important;
40 }
41 .remove
42 { }{
43 background-image: url(../Images/icons/delete.gif) !important;
44 }
45 .save
46 { }{
47 background-image: url(../Images/icons/save.gif) !important;
48 }
49 .ext-mb-save
50 { }{
51 background: transparent url(../Images/download.gif) no-repeat top left;
52 height: 46px;
53 }
54 </style>
55 </head>
56
57 <body>
58 </body>
59 </html>
(注:请注意JS引用的路径)
(1)新建GridForProjectLists.js文件(这个才是核心 )
代码如下:
 GridForProjectLists.js
1 /**//*
2 * Ext JS Library 2.0 Beta 1
3 * Copyright(c) 2006-2007, Ext JS, LLC.
4 * licensing@extjs.com
5 *
6 * http://extjs.com/license
7 */
8 Ext.onReady(function() {
9 var win;
10 var newwin;
11 Ext.QuickTips.init();
12 // create the Data Store
13 var ds = new Ext.data.GroupingStore( {
14 // load using script tags for cross domain, if the data in on the same domain as
15 // this page, an HttpProxy would be better
16 proxy: new Ext.data.HttpProxy( {
17 url: '../Projects/JsonDataSource/ProjectBaseInfo.aspx'
18 }),
19
20 // create reader that reads the project records
21 reader: new Ext.data.JsonReader( {
22 root: 'data',
23 totalProperty: 'totalCount'
24 }, [
25 {name:'PROJECT_NO', type:'string'},
26 {name:'PROJECT_NAME', type:'string'},
27 {name:'PROJECT_ALIAS', type:'string'},
28 {name:'PROJECT_DEPT_NO', type:'string'},
29 {name:'PROJECT_MANAGER', type:'string'},
30 {name:'PROJECT_LEADER', type:'string'},
31 {name:'PROJECT_CURRENT_STATUS', type:'string'},
32 {name:'PROJECT_START_DATE', type:'date'},
33 {name:'PROJECT_FINISH_DATE', type:'date'},
34 {name:'PROJECT_REAL_START_DATE', type:'date'},
35 {name:'PROJECT_REAL_FINISH_DATE',type:'date'},
36 {name:'PROJECT_MEMO', type:'string'}
37 ]),
38 //groupField:'PROJECT_DEPT_NO',
39 remoteSort: true
40 });
41 ds.setDefaultSort('PROJECT_NAME', 'desc');
42
43 // pluggable renders
44 function renderProject(value, p, record) {
45
46 return String.format(
47 '<img border=0 src="../Images/icons/application_view_list.png" id="btnView_{0}" style="cursor:hand" alt="浏览"> <a href="ProjectDetail.aspx?ProjectNo={0}" target="_blank"><img border=0 src="../Images/icons/application_view_list.png" style="cursor:hand" alt="编辑"></a> <a href="ProjectDetail.aspx?ProjectNo={0}" target="_blank"><img border=0 src="../Images/icons/cross.gif" style="cursor:hand" alt="删除"></a>',
48 record.data.PROJECT_NO);
49 }
50
51 // the column model has information about grid columns
52 // dataIndex maps the column to the specific data field in
53 // the data store
54 var nm = new Ext.grid.RowNumberer();
55 var sm = new Ext.grid.CheckboxSelectionModel(); // add checkbox column
56 var cm = new Ext.grid.ColumnModel([nm,sm,
57 {id:'PROJECT_NO',header:"项目编号",dataIndex: 'PROJECT_NO', width: 40, align:'center'},
58 {header:"项目名称",dataIndex: 'PROJECT_NAME', width: 100,align:'left' },//,renderer: renderProject},
59 {header:"项目简称",dataIndex: 'PROJECT_ALIAS', width: 50, align:'left'},
60 {header:"部门",dataIndex: 'PROJECT_DEPT_NO', width: 50, align:'center'},
61 {header:"项目经理", dataIndex: 'PROJECT_MANAGER', width: 40, align:'center'},
62 {header:"开发经理", dataIndex: 'PROJECT_LEADER', width: 40, align:'center'},
63 {header:"当前状态",dataIndex: 'PROJECT_CURRENT_STATUS',width: 40, align:'center'},
64 {header:"预计开始日期",renderer: Ext.util.Format.dateRenderer('Y-m-d'),dataIndex: 'PROJECT_START_DATE',width: 50, align:'center'},
65 {header:"预计结束日期",renderer: Ext.util.Format.dateRenderer('Y-m-d'),dataIndex: 'PROJECT_FINISH_DATE',width: 50, align:'center'},
66 {header:"实际开始日期",renderer: Ext.util.Format.dateRenderer('Y-m-d'),dataIndex: 'PROJECT_REAL_START_DATE',width: 50, align:'center'},
67 {header:"实际结束日期",renderer: Ext.util.Format.dateRenderer('Y-m-d'),dataIndex: 'PROJECT_REAL_FINISH_DATE',width: 50, align:'center'},
68 {header:"备注",dataIndex: 'PROJECT_MEMO',width: 50, align:'left'},
69 {id:'PROJECT_NO',header:"操作",dataIndex: 'PROJECT_NO', width: 60, align:'center',renderer:renderProject,sortable: false}
70 ]);
71
72 //hide column
73 cm.setHidden(4, !cm.isHidden(4)); //隐藏项目简称列
74 cm.setHidden(7, !cm.isHidden(7)); //隐藏开发经理列
75 cm.setHidden(13, !cm.isHidden(13)); //隐藏备注列
76 // by default columns are sortable
77 cm.defaultSortable = true;
78 var gdProjects = new Ext.grid.GridPanel( {
79 frame:true,
80 collapsible: true,
81 animCollapse: false,
82 //el:'projects-grid',
83 width :965,
84 height:530,
85 title:'项目一览表',
86 iconCls: 'icon-grid',
87 renderTo: document.body,
88 store: ds,
89 cm: cm,
90 sm: sm,
91 trackMouseOver:true,
92 loadMask: {msg:'正在加载数据,请稍侯……'},
93 //loadMask: true,
94 viewConfig: {
95 forceFit:true,
96 enableRowBody:true,
97 getRowClass : function(record, rowIndex, p, ds) {
98 return 'x-grid3-row-collapsed';
99 }
100 },
101 view: new Ext.grid.GroupingView( {
102 forceFit:true,
103 groupTextTpl: ' {text} ( {[values.rs.length]}条记录)'
104 }),
105 bbar: new Ext.PagingToolbar( {
106 pageSize: 25,
107 store: ds,
108 displayInfo: true,
109 displayMsg: '当前显示 {0} - {1}条记录 /共 {2}条记录',
110 emptyMsg: "无显示数据"
111 }),
112 // inline toolbars
113 tbar:[ {
114 id:'btnAdd',
115 text:'新增',
116 tooltip:'新增',
117 iconCls:'add',
118 handler: showAddPanel
119 }, '-', {
120 text:'查询',
121 tooltip:'查询',
122 iconCls:'search'
123 }, '-', {
124 text:'批量删除',
125 tooltip:'删除',
126 iconCls:'remove',
127 handler:showDelDialog
128 }]
129
130 });
131
132 });
展示成果:

至此,本文已实现Grid的数据显示、分页、排序的功能。常见的CRUD四个功能的R已完成,接下来,我将提供CUD的功能(如form提交等动作),未完待续……
Feedback
也在使用ExtJS.
配合ms的ajax。对json和webservice对数据的转换和传递效率会更好!
大哥,你什么时候提供打包下载啊?~~我用Orcas调试不出来:(
好像放Grid的网页加上如下两句时,Grid的标题就不显示了.(在IE6下)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
好像放Grid的网页加上如下两句时,Grid的标题就不显示了.(在IE6下,ext2.0)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
提供的源代码数据库有sql server2000的吗
@ylg
还不知道你的问题,有空我试试
@fjyou
sorry,到时候我只提供sql server2005的:(
我按你的改了一个,可就是显示不出来数据
是VS2005的
能帮我看一下吗??
添加过程中,那个进度条是怎么做的.能否把源码发给我下:ghotvub03@sina.com.要急用,THANK YOU!
后台得到的strJsonSource怎么在GridForProjectLists.JS里没有用到呢?GridForProjectLists.JS里是怎么拿到后台数据的
@HI
在GridForProjectLists.JS中有
proxy: new Ext.data.HttpProxy({
url: '../Projects/JsonDataSource/ProjectBaseInfo.aspx'
}),
@seeker
我会blog中发布源码
@LGame
可以在blog中留言给我
日期型的数据,JSON序列化后是Date(1192821211) 这样的数据,我使用date的映射类型,表哥显示不出来数据来
@Flymouse
不知你有没有注意的我的Lambda表达式的处理:)
不知道,你有没有实现右键菜单,然后删除的功能?
以下是我写的测试代码:老是有错..能指点一下吗?
我就是想点击表格的某一行右键,出现删除的菜单,然后点删除出现一个确认删除的提示框,如果'yes',则执行del相应的代码
grid.addListener('rowcontextmenu', onMessageContextMenu); //callback function for the right click event function onMessageContextMenu(grid, rowIndex, e) { e.stopEvent(); var coords = e.getXY(); var selectedId = ds.getAt(rowIndex).id; var messageContextMenu = new Ext.menu.Menu({ id: 'messageContextMenu', items: [ { text: '删除', _id: selectedId, handler: cdelete } ] }); messageContextMenu.showAt([coords[0], coords[1]]); e.preventDefault(); }; function cdelete(item){ rightclickdelete(item._id); }; var rightclickdelete =function (_delid){ if(_delid) { Ext.MessageBox.confirm('Message','Do you really want to delete selection?', _delete); //这里_delete的参数怎么写? } else { Ext.MessageBox.alert('Message','Please select at least one item to delete'); }//end if/else block }; function _delete(btn){ if(btn=="yes"){ var jsondata=Array(_delid); //这里得不到rightclickdelete 传入的_delid var encoded_keys = Ext.encode(jsondata); Ext.Ajax.request({ waitMsg: 'Saving changes...', //url where to send request url: 'readdata.php', .......
我这样也试过: if(_delid) { Ext.MessageBox.confirm('Message','Do you really want to delete selection?', _delete(_delid)); }
funtcion _delete(btn,_delid){ if(btn=="yes"){ 但是这样btn会没有值,也就无法执行后面的代码
@kemy
首先请参考我的http://www.cnblogs.com/cmsoft/archive/2007/11/24/ExtJS_Grid_Delete.html这个文章
然后GridForProjectLists.JS中实现Grid的ContextMenu及Del功能如下:
//right click menu
gdProjects.addListener('rowcontextmenu', showContextMenu);
function showContextMenu(gdProjects, rowIndex, e) {
e.stopEvent();
var local = e.getXY();
var gridContextMenu = new Ext.menu.Menu({
items: [
{
text: '删除',
handler: function(){
var record = gdProjects.getStore().getAt(rowIndex);
Ext.MessageBox.show(
{
title:'提示',
msg:'确实需要删除所选的记录吗?',
buttons: Ext.MessageBox.YESNO,
icon: Ext.MessageBox.QUESTION,
fn: function(button){
if(button=='yes'){
var projectNo=record.data.PROJECT_NO;
var conn = new Ext.data.Connection();
conn.request({
url:"../Projects/OperProjects/DeleteProject.asmx/DelProject",
params:{strProjects:projectNo},
method: 'post',
scope: this,
callback:function(options,success, response){
if(success){
Ext.MessageBox.alert("提示","所选记录成功删除!");
ds.load({params:{start:0, limit:25}});
}
else
{Ext.MessageBox.alert("提示","所选记录删除失败!");}
}
})
}
}
});
}
}
]
});
gridContextMenu.showAt([local[0], local[1]]);
e.preventDefault();
};
谢谢!..问题现在已经解决!
我现在还有一个问题就是:
如果记录有2条,我全选,然后删除的话,grid还是显示2条记录.实际数据库里是删掉了的..每次非得刷新才显示正确!..
如果删除记录后,数据库还有1条(或者1条以上的记录的话),则显示正常的..
换句话说就是:如果删除数据后,grid数据为空时,显示有些问题..需要刷新一次才显示为空.(或者是添加一条记录后,显示有一条记录)
dc.reload()也无效
@kemy
把实现删除重载的
ds.load({params:{start:0, limit:25}});
这行代码改成下面的:
ds.baseParams.start = 0;
ds.baseParams.limit = 25;
ds.reload();
这是执行之后返回的respone: ({"totalCount":"0","list":null})
楼主用联系方式吗?
我的msn: yuanqiming#sanysoft.com
把#改成@
@kemy
处理一下返回的JSON
如:{"totalCount":"0","list":""}
问题已经解决:
正如你所说:
把返回的json处理一下.
其它的还是照用:ds.reload(); 现在没问题了..
太感谢你了...
一看界面就知道是中信的...Wotalk,估计只能卖给政府,否则我们有太多更好的选择了....
LINQ的实体,如果使用了关联,不能序列化,请问要怎么解决
我实在不想用匿名类,也不想自己再写一个实体用于序列化。
谢谢
cm.setHidden(4, !cm.isHidden(4));
为什么这个隐藏方法,在ie6不生效在firefox中才生效呢
楼主,代码发完了吗?有下载地址吗?如果方便的话,发到我邮箱一份,感激涕零!!!!!
能发一份原码给我吗,以前我是用php+extjs,现在不知道怎么办asp.net和extjs结合起来
求楼主给份完整源码
sunhao@mail.luhzou.net
先谢谢了
跪求楼主给个源代码
sunzhenlin163@163.com
你这写的什么啊,不可能运行起来的。
把你改过的从新添加上来吧。
这真是笑话了,你的LINQ语法就有错误啊。
比如这几行:
137 int iCount = query.Count(); //所要记录数
138 int PageNum = start / limit; //共有页数
139 int PageSize = limit;
140 query = query.Skip(PageSize * PageNum).Take(PageSize); //当前页记录
象你这样写怎么可能得到正确的记录呢?应该这样吧:
140 query = query.Skip(start).Take(limit);
你写的太搞笑了。
@EXTJS
看看上面的代码,
你的
query = query.Skip(start).Take(limit);
难道跟
137 int iCount = query.Count(); //所有记录数
138 int PageNum = start / limit; //共有页数
139 int PageSize = limit;
140 query = query.Skip(PageSize * PageNum).Take(PageSize); //当前页记录
不一样吗?
求楼主给份完整源码
谢谢了
我的邮箱ithanshui@163.com
能否也给我一份源码
我的邮箱23017904@qq.com
为嘛不给个下载的代码呢??呵呵,发布的这些代码COPY了有行号的,摆明了不让复制的!
什么时候调用js文件?
body之间什么都没有,数据可以显示??
最近再看关于ext的东西 很喜欢ext 请楼主给我发一份 谢谢
兄弟,看到你做的东西还可以,不知能否把例子源码提供下载,供广大感兴趣的朋友一起研究,学习,讨论与交流!
QQ:26326507, email:hy2001al@163.com
网站:http://www.linjon.cn
求楼主给份完整源码 fengma_312@126.com 先谢谢了
看了Extjs的东西很感兴趣,希望楼主能发份代码给我谢谢!!
weare009@126.com
求楼主给份代码!songjinghui8886@126.com 不胜感激
楼主拜托您,给份代码吧,
hsd6181000@163.com
楼主,请问一下,怎么你这Grid里实现查询功能呢,
楼主,请问一下,怎么你这Grid里实现查询功能呢,
太强大了哈哈,正需要。果然和ExtJs提供的例子里一样在JS里用aspx页的形式获取JSon啊。多谢博主了。
求楼主能给份完整代码,chencs_net@126.com,谢谢。
lz能不能发一份源码给我研究一下。最近在做这个,很头痛的。
邮箱:pengy_b@htomail.com 谢谢
楼主拜托您,给份代码吧, xushuxun@126.com
楼主 希望能发一份源代码,小妹感激不尽啊 yanzi120180407.com@qq.com
楼主 ,能否发份源代码啊? 感激不尽! gufeng4355853@163.com
楼主 希望能发一份源代码,感激不尽啊 nxf2000@126.com
希望楼主能给我发一份,不胜感激啊 gzkqg119@163.com
zjl_shenlan123@163.com 源码能发给我看看么?感激不尽!!!
楼主,学习阶段,希望看看源码,谢谢. guoxufeng@sina.com
如何排除重复录入,就是说,数据库有原来有这条信息,新增数据时应该有提示,如何做到呢?
请楼主发份源码,谢谢! 包括增、删、改、查的,可以吗?
我邮箱areallovejuan@126.com,谢谢楼主!
帮忙发下code,学习一下.也在关注ext与.net的结合应用 zw.world.go@163.com
要用到ext的grid,正在学习,望楼主能发份源代码,十分感谢!邮箱:393519961@qq.com
楼主可以把源码和数据库给俺发一份不?正需要 邮箱:9890cn@163.com
楼主能提供以下源代码嘛,我的邮箱是baoli_jin@126.com O(∩_∩)O谢谢
ProjectBaseInfoDataContext 这个类在哪里?编译不过去?
楼主可否提供一下代码学习一下,谢谢! kuixuan-ma@126.com
楼主,能不能提供一下代码学学一下,谢谢! asyaofeng@163.com
楼主,能不能提供一下代码学学一下,谢谢! 594848642@qq.com
Web应用高级开发工程师
职位类别:计算机软件/系统集成 工作地点:上海 工作经验:3-5年 职位月薪:8001-10000元/月
职位描述/要求: 岗位描述: 1. 进行ASP.NET (C#)开发; 2. 参与工程项目系统分析、系统设计; 3. 独立承担工程项目系统功能模块开发; 4. 开发过程中的系统测试。 岗位要求: 1. 熟悉.NET, Visual studio 2005开发工具,精通Asp.net/HTML/javascript/Ajax,能熟练进行.net(c#) 的程序开发; 2. 熟悉extjs框架,1年以上extjs实际项目开发经验,能够按照要求快速做出基于extjs的前台界面系统; 3. 具有1年以上大型项目开发与管理经验; 4. 精通 MS SQL Server 数据库与存储过程、函数开发; 5. 思路清晰,富有创新思维,较强的分析解决问题的能力,能独立完成开发任务; 6. 能承受较大的工作压力,富团队精神及较强的沟通能力。
有意者请投简历至:hr@flowportal.com
悲催呀。我的东西弄N久了,就是不显示出来grid里面,悲催啊
楼主能不能发一下源代码啊,谢谢了。 qqzzft@163.com
|