简单介绍:
本示例主要用EXT2.2+vs.2008.net+C#+sql Server 2005解决GridPanel动态生成数据列,以减免在Html页面里静态配置数据列所带来的麻烦.为了大家更好的更方便的使用本示例,就附加了一个功能:只要添加本地的数据库连接,选择数据库里面的表,就可以对代码进行测试. 另外,为了方便2005.net的朋友们,本例是在asp.net2.0下编译的。
源代码下载
先看看效果图吧
首先需要输入所在服务器下的数据库名称 确定后 会在下面出现Combox列表,然后在列表里选择表名称 确定后即可显示
但有点需要注意 开始时尽量选择那些有ID字段的表 因为 在后台分页页面设置了一个初始的ID 这个ID可以根据需要自己定义或者更改

下面就是在选择正确的表名 确定后出现的效果图

Ext实现的Html源代码

Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MakeGrid._Default" %>
<!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">
<head id="Head1" runat="server">
<title>动态生成GridPanel</title>
<link rel="Stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css" />
<link rel="Stylesheet" type="text/css" href="ExtJS/resources/css/xtheme-green.css" />
<script type="text/javascript" src="ExtJS/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ExtJS/ext-all.js"></script>
<script type="text/javascript" src="ExtJS/ext-lang-zh_CN.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:left;">
<div id="panel_id"></div>
<script type="text/javascript">
var table_Name;
var panel;
var data;
var grid;
var combobox;
var URLSTR;
function DataColumn()
{
this.fields = '';
this.columns = '';
this.addColumns=function(name,caption)
{
if(this.fields.length > 0)
{
this.fields += ',';
}
if(this.columns.length > 0)
{
this.columns += ',';
}
this.fields += '{name:"' + name + '"}';
this.columns += '{header:"' + caption + '",dataIndex:"' + name + '",width:100,sortable:true}';
};
}
function DataGrid(URL)
{
var cm = new Ext.grid.ColumnModel(eval('([' + data.columns + '])'));
cm.defaultSortable = true;
var fields = eval('([' + data.fields + '])');
var newStore = new Ext.data.Store
({
proxy:new Ext.data.HttpProxy({url:URL}),
reader:new Ext.data.JsonReader({totalProperty:"totalPorperty",root:"result",fields:fields})
});
newStore.load({params:{start:0,limit:9}});
var pagingBar = new Ext.PagingToolbar
({
displayInfo:true,
emptyMsg:"没有数据显示",
displayMsg:"显示从{0}条数据到{1}条数据,共{2}条数据",
store:newStore,
pageSize:9
});
this.gridPanel = new Ext.grid.GridPanel
({
cm:cm,
id:"grid_panel",
renderTo:"grid_div",
store:newStore,
frame:false,
border:true,
layout:"fit",
pageSize:16,
width:600,
//autoWidth:true,
height:400,
viewConfig:{forceFit:true},
bbar:pagingBar
});
}
function MakePanel()
{
this.panel_def = new Ext.Panel
({
layout:"fit",
border:true,
frame:true,
title:"数据浏览(请在下面输入数据库连接串:)",
width:660,
height:500,
id:"Viewport_ID",
renderTo:"panel_id",
tbar:
[
'',
'服务器名:',{xtype:'field',id:'dbServerID',width:100,value:"localhost"},
'',
'用户名:',{xtype:'field',id:'dbUIDID',width:50,value:"sa"},
'',
'密码:',{xtype:'field',id:'dbPasswordID',width:50,value:"0"},
'',
'输入数据库名称:',{xtype:'field',id:'dbNameID',width:100,value:""},
'',
{text:'确定',pressed:true,handler:event_click_enter,tooltip:"查看数据库连接是否正确"}
],
html: '<div id="grid_div"></div>',
bbar:
[
'请选择表:',
'<div id="hello"></div>',
'',
{text:"确定",handler:event_select_table,id:"SelectTableID",disabled:false}
]
});
}
function event_select_table()
{
if(!Ext.get("ComboBox_ID"))
{
Ext.Msg.alert("警告消息","请先选择数据库!");return;
}
var tableName = Ext.util.Format.trim(Ext.get("ComboBox_ID").getValue());
if(tableName==""||tableName=="请选择表名")
{
Ext.Msg.alert("警告消息","请选择表名!");return;
}
if(!table_Name)
{
table_Name = tableName;
}
else if(table_Name==tableName)
{
return;
}
else
{
if(grid.gridPanel)
{
grid.gridPanel.destroy();
data.fields = '';
data.columns = '';
}
data.fields = '';
data.columns = '';
table_Name = tableName;
}
data = new DataColumn();
Ext.Ajax.request
({
url:"JsonData.aspx?param=initDataColumnName&tableName="+tableName,
success:function(response,option)
{
if(response.responseText=="")
{
Ext.Msg.alert("提示消息","当前所选中的表-->"+tableName+"<--可能没有数据!");return;
}
var res = Ext.util.JSON.decode(response.responseText);
for(var i=0;i<res.length;i++)
{
for(var p in res[i])
{
data.addColumns(p,p);
}
}
grid = new DataGrid("JsonData.aspx?param=initData&tableName="+tableName);
},
failure:function()
{
Ext.Msg.alert("消息","查询出错---->请打开数据库查看数据表名字是否正确");
}
});
}
function event_click_enter()
{
var dbServer = Ext.get("dbServerID").getValue();
var dbUID = Ext.get("dbUIDID").getValue();
var dbPassword = Ext.get("dbPasswordID").getValue();
var dbName = Ext.get("dbNameID").getValue();
var format = Ext.util.Format;
if(format.trim(dbServer)=="")
{
Ext.Msg.alert('警告消息','服务器名称不能够为空');return;
}
if(format.trim(dbUID)=="")
{
Ext.Msg.alert('警告消息','用户登陆ID不能够为空');return;
}
if(format.trim(dbName)=="")
{
Ext.Msg.alert('警告消息','数据库名称不能够为空');return;
}
var urlStr = "JsonData.aspx?param=initValidateDB"+
"&dbServerID="+dbServer+
"&dbUIDID="+dbUID+
"&dbPasswordID="+dbPassword+
"&dbNameID="+dbName;
if(!combobox)
{
combobox = new MakeComboBox(urlStr); //addField
}
else
{
if(URLSTR!=urlStr)
{
combobox.comboBox.destroy();
combobox = new MakeComboBox(urlStr);
}
}
URLSTR = urlStr;
Ext.Msg.alert('提示消息','现在请选择表名');
}
function MakeComboBox(URL)
{
var store = new Ext.data.Store
({
proxy: new Ext.data.HttpProxy({url:URL}), // 数据源
reader: new Ext.data.JsonReader({},[{name: 'TableName'}])// 如何解析
});
store.load();
this.comboBox = new Ext.form.ComboBox
({
id:"ComboBox_ID",
renderTo:"hello",
editable:false,
store:store,
emptyText:'请选择表名',
typeAhead: true,
triggerAction: 'all',
valueField:'TableName',
displayField: 'TableName',
selectOnFocus:true,
width:200,
resizable:true
});
}
function loader()
{
Ext.QuickTips.init();
MakePanel();
}
Ext.onReady(loader);
</script>
</div>
</form>
</body>
</html>
处理Ext请求的JsonData.aspx页面的源代码
这里请朋友们务必注意,这个处理Ext请求的JsonData.aspx页面的源代码 只有一行 其余的务必务必删除掉,
否则将作为Json数据一起返回 那就错了

Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JsonData.aspx.cs" Inherits="MakeGrid.JsonData" %>
处理Ext请求的JsonData.aspx页面的后台源代码

Code
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace MakeGrid
{
public partial class JsonData : System.Web.UI.Page
{
//初始化连接字符串
string dbDtr = "server={0};database={1};uid={2};pwd={3}";
protected void Page_Load(object sender, EventArgs e)
{
#region 分页参数
int pagesize = 5;
int start = 1;
string field, asc_desc;
if (string.IsNullOrEmpty(Request["sort"]))
{
field = "ID";//务必注意 你选择的表中必须有个字段是ID,如果没有ID,你要做动态的调整
asc_desc = "ASC";
}
else
{
field = Request["sort"];
asc_desc = Request["dir"];
}
if (!string.IsNullOrEmpty(Request["limit"]))
{
pagesize = int.Parse(Request["limit"]);
start = int.Parse(Request["start"]);
}
start = start / pagesize;
start += 1;
#endregion
string param = Convert.ToString(Request["param"]);
if (param != null && param != "")
{
switch (param)
{
case "initValidateDB":
InitValidateDB();
break;
case "initDataColumnName":
InitDataColumnName();
break;
case "initData":
InitData(field, asc_desc, pagesize, start);
break;
default:
break;
}
}
}
//绑定数据
void InitData(string field, string asc_desc, int pagesize, int start)
{
string tableName = Convert.ToString(Request["tableName"]);
Bind_Data(field, asc_desc, pagesize, start, tableName);
}
//绑定数据列
void InitDataColumnName()
{
string tableName = Convert.ToString(Request["tableName"]);
GetDataColumnName(tableName);
}
//验证数据库连接是否正确,如果正确还需要返回该数据库连接下的所有的表的名称
void InitValidateDB()
{
//从前台获取连接字符串
string dbServerID = Convert.ToString(Request["dbServerID"]);
string dbUIDID = Convert.ToString(Request["dbUIDID"]);
string dbPasswordID = Convert.ToString(Request["dbPasswordID"]);
string dbNameID = Convert.ToString(Request["dbNameID"]);
//拼装数据库连接字符串
string dbs = String.Format(dbDtr, dbServerID, dbNameID, dbUIDID, dbPasswordID);
Session["DBS"] = dbs;
Access.connstring = Convert.ToString(Session["DBS"]);
//获取所选择的数据库下面的所有数据表
string sql = String.Format("select [Name] from {0}..sysobjects WHERE [type] IN (N'U')", dbNameID);
DataSet ds = Access.GetDataSet(sql);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
List<Hashtable> testList = new List<Hashtable>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Hashtable ht = new Hashtable();
DataRow row = ds.Tables[0].Rows[i] as DataRow;
ht["TableName"] = Convert.ToString(row["Name"]);
testList.Add(ht);
}
//生成Json字符串
string json = JavaScriptConvert.SerializeObject(testList);
Response.Write(json);
}
}
/// <summary>
/// 获取当前表的所有列名
/// </summary>
/// <param name="tableName"></param>
private void GetDataColumnName(string tableName)
{
GetConnString();
DataSet ds = Access.GetDataSet(String.Format("select top 1 * from {0}", tableName));
//只要ds不为null,则不管该表是否有数据,都有数据列生成
if (ds != null)
{
List<Hashtable> htList = new List<Hashtable>();
foreach (DataColumn col in ds.Tables[0].Columns)
{
Hashtable ht = new Hashtable();
ht.Add(col.ColumnName, col.ColumnName);
htList.Add(ht);
}
try
{
string json = JavaScriptConvert.SerializeObject(htList);
Response.Write(json);
}
catch (Exception ee)
{
string error = ee.Message;
}
}
else
{
Response.Write("");
}
}
/// <summary>
/// 获取数据集合
/// </summary>
/// <param name="field"></param>
/// <param name="asc_desc"></param>
/// <param name="pagesize"></param>
/// <param name="start"></param>
/// <param name="tableName"></param>
private void Bind_Data(string field, string asc_desc, int pagesize, int start, string tableName)
{
GetConnString();//作用是获取动态生成的数据库连接字符串
DataSet ds = Business.GetPagingData(field, asc_desc, pagesize, start, tableName);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
List<Hashtable> hashList = new List<Hashtable>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i] as DataRow;
Hashtable ht = new Hashtable();
foreach (DataColumn col in ds.Tables[0].Columns)
{
ht.Add(col.ColumnName, row[col.ColumnName]);
}
hashList.Add(ht);
}
int? count = Access.GetCount(String.Format("Select count(*) from {0}", tableName));
string json = "{totalPorperty:" + count + ",result:" + JavaScriptConvert.SerializeObject(hashList) + "}";
Response.Write(json);
}
else
{
Response.Write("");
}
}
/// <summary>
/// 获取连接字符串
/// </summary>
private void GetConnString()
{
if (Session["DBS"] != null && Convert.ToString(Session["DBS"]) != "")
{
Access.connstring = Convert.ToString(Session["DBS"]);
}
else
{
Response.Write(""); return;
}
}
}
}
业务组件类

Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
namespace MakeGrid
{
public class Business
{
/// <summary>
/// 实现分页
/// </summary>
/// <param name="field"></param>
/// <param name="asc_desc"></param>
/// <param name="pagesize"></param>
/// <param name="start"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataSet GetPagingData(string field, string asc_desc, int pagesize, int start, string tableName)
{
string sql = "WITH MOVIES AS ( " +
" SELECT ROW_NUMBER() OVER " +
" (ORDER BY " + field + " " + asc_desc + " ) AS Row," +
" *" +
" FROM " + tableName + " )" +
" SELECT *" +
" FROM MOVIES " +
" WHERE Row between (@start-1)* @pagesize+1 and @start*@pagesize";
SqlParameter[] prams =
{
new SqlParameter("@start",start),
new SqlParameter("@pagesize",pagesize)
};
return Access.GetDataSet(sql, prams);
}
}
}
数据组件类

Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
namespace MakeGrid
{
public class Access
{
public Access()
{ }
public static string connstring = "";
private static void CreateCommand(SqlConnection conn, SqlCommand cmd, string cmdText, params SqlParameter[] prams)
{
conn.ConnectionString = Access.connstring;
if (conn.State == ConnectionState.Closed)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (prams != null)
{
foreach (SqlParameter p in prams)
cmd.Parameters.Add(p);
}
}
public static DataSet GetDataSet(string cmdText)
{
return GetDataSet(cmdText, null);
}
public static DataSet GetDataSet(string cmdText, params SqlParameter[] prams)
{
using (SqlConnection conn = new SqlConnection())
{
SqlCommand cmd = new SqlCommand();
CreateCommand(conn, cmd, cmdText, prams);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
}
public static int? GetCount(string cmdText)
{
return GetCount(cmdText, null);
}
public static int? GetCount(string cmdText, params SqlParameter[] prams)
{
using (SqlConnection conn = new SqlConnection())
{
SqlCommand cmd = new SqlCommand();
CreateCommand(conn, cmd, cmdText, prams);
int? count;
count = Convert.ToInt32(cmd.ExecuteScalar());
cmd.Parameters.Clear();
return count;
}
}
}
}
源代码下载
posted @ 2008-08-21 19:48
殷良胜 阅读(4369)
评论(87)
编辑
收藏
网摘

发表评论
ext太大了 如果不能解决这个问题
只能再oa里用了
也想用 可是公司的网站不让 1m 听着就吓人
可以写在code里面,清晰点,没有效果图!
很好.
#5楼
[
楼主]2008-08-22 08:44 |
@谦虚的天下
效果图已经添上
感谢建议!
#6楼
[
楼主]2008-08-22 08:46 |
@swfczm
现在已经上传文件,提供文件下载
感谢关注!
#7楼
[
楼主]2008-08-22 17:08 |
@Gray Zhang
感谢关注 以后一定不断的尝试改进!
#8楼
[
楼主]2008-08-22 17:10 |
@林思衣
呵呵 看来EXT会越来越大 感谢关注!
#9楼
219.147.26.* 2008-09-25 13:17 |
我的COMBOX绑定不了数据,为什么?
#10楼
219.147.26.* 2008-09-25 13:18 |
是不是读取JSON失败?
#11楼
[
楼主]2008-09-26 12:50 |
@张雪娇
你好!
1,请查看自己数据库连接的字符串是否正确.
2,如果连接正确,那就跟踪json的字符串数据是不是含有可以使用的表名字
3,是否正确引用json组件
说明:最近公司有规定,不能够在上班时间上网.所以没有及时上来,请原谅.
#12楼
[
楼主]2008-10-31 12:48 |
用vs05 最后出现这个异常:
未能加载文件或程序集“System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统找不到指定的文件。
有什么好的解决办法?
#14楼
[
楼主]2008-11-05 17:57 |
@宿命的风
你可以尝试下新建一个项目,然后把相关的几个主要文件复制进去就可以了.
#15楼
61.129.42.* 2008-11-06 11:16 |
能提供源文件下载吗
请教一个问题,
是不是使用了Ext之后就不用再引用JQuery.js了?
我看那个adapter目录下有JQuery目录,也有它的文件,
不太理解的说
#17楼
61.141.0.* 2008-11-19 14:44 |
能不能把内容打包提供下载
或者发我一份给我,让我学习
#18楼
[
楼主]2008-11-19 16:13 |
@xmc404
以前是可以提供下载的
只是没有人下载
可能都能够看懂吧
其实这里面已经很详细了
如果你很需要的话
我有空的时候上传一份。
#19楼
119.121.33.* 2008-11-19 22:39 |
对于我们初接触extjs的来说,如果能下载真的很需要
#20楼
[
楼主]2008-11-20 08:22 |
@xmc404
好的
有你这句话
以后会将所有的例子都整理上传
这几天确实太忙
希望能够谅解
#21楼
[
楼主]2008-11-20 08:23 |
@kkun
使用了Ext之后就不需要再引用JQuery.js
它里面是有很多文件的
#22楼
[
楼主]2008-11-20 08:24 |
@小峰f
以前需要下载的朋友很少
而且都是加我的msn 我传给他的
现在根据需要的人越来越多
在以后我会整理下
以后尽量将所有主要的的例子都提供下载
但是Ext的原始文件就不提供下载了毕竟文件不小的 而且我的空间也有限
#23楼
61.141.0.* 2008-11-21 08:46 |
不能列出所有数据表是什么原因呢?我用的是SQL2000
#24楼
58.38.4.* 2008-11-25 15:17 |
能不能上传一下代码啊,谢谢了
#25楼
[
楼主]2008-11-25 18:11 |
@xmc404
你可以跟踪后台看看有没有获取到数据
或者所在的数据库中是否有那个表存在
总之
把后台代码尽量都包含在try catch里面 只有好处 没有坏处
另外
如果客户端报错后 通常在页面里会弹出窗口询问是否要调试(IE)
但
你这个问题既然是和数据库关系上了,那就检查几个Sql语句是否在2000里能够执行
但有点需要特别说明
用到的分页语句不知道SQL2000是否支持
string sql = "WITH MOVIES AS ( " +
" SELECT ROW_NUMBER() OVER " +
" (ORDER BY " + field + " " + asc_desc + " ) AS Row," +
" *" +
" FROM " + tableName + " )" +
" SELECT *" +
" FROM MOVIES " +
" WHERE Row between (@start-1)* @pagesize+1 and @start*@pagesize";
自己测试下吧,
如果还有问题
就请你把问题描述清楚点
好不好呢
#26楼
[
楼主]2008-11-25 18:15 |
@pl
这个例子的源代码目前我也没有
其实
这个例子是所有提高篇例子中代码最全的一个
包含了
前台 后台 数据都提供了 你只要在2008里面
直接打开就能够运行了
所以我先建议你在自己的电脑少先自己动手做下
实在不行
再告诉我
我再做个例子提供下载可以吗
#27楼
222.191.244.* 2008-12-02 15:53 |
楼主你好, 我在后台动态获取数据datatable 列名 函数中得到的json数据是这样的 [{"OBJECTID":"OBJECTID"},{"NAME":"NAME"},{"TYPE":"TYPE"},{"COLOR":"COLOR"},{"DISTRICT":"DISTRICT"},{"KEYID":"KEYID"},{"MODI":"MODI"},{"CENTERX":"CENTERX"},{"CENTERY":"CENTERY"},{"SHAPE":"SHAPE"},{"SHAPE_Length":"SHAPE_Length"},{"SHAPE.AREA":"SHAPE.AREA"},{"IS_SELECTED":"IS_SELECTED"}]
但是我在前台执行 var res = Ext.util.JSON.decode(response.responseText);时候报了这个错误:
Microsoft JScript 编译错误: 缺少 ')' ,,, 不知道是什么原因?????
#28楼
222.191.244.* 2008-12-02 15:55 |
还有个问题就是,,我后台jsonData的页面里面不是直接使用sql语句去查,而是已经保存好了一个大的datatable ,请问如何实现分页呢??? 谢谢
#29楼
[
楼主]2008-12-02 19:35 |
@pl
有空的时候能否把源代码张贴出来
或者发到我的邮箱里面
这样我调试起来会方便点
#30楼
58.38.5.* 2008-12-03 09:02 |
呵呵,其实很简单的代码。。就是在GetDataColumnName(string tableName) 函数里面,我直接从session里面读出datatable。其他的跟你的一样的!!!
#31楼
[
楼主]2008-12-03 09:11 |
@pl
跟踪下response.responseText
查看这个值是什么。
#32楼
58.38.5.* 2008-12-03 11:41 |
[{"OBJECTID":"OBJECTID"},{"NAME":"NAME"},{"TYPE":"TYPE"},{"COLOR":"COLOR"},{"DISTRICT":"DISTRICT"},{"KEYID":"KEYID"},{"MODI":"MODI"},{"CENTERX":"CENTERX"},{"CENTERY":"CENTERY"},{"SHAPE":"SHAPE"},{"SHAPE_Length":"SHAPE_Length"},{"SHAPE.AREA":"SHAPE.AREA"},{"IS_SELECTED":"IS_SELECTED"}]
#33楼
[
楼主]2008-12-03 12:19 |
@pl
把你的关于GetDataColumnName(string tableName) 这个函数的实现贴出来看看吧。
#34楼
[
楼主]2008-12-03 15:43 |
@pl
找到问题所在了
将JsonData.aspx 如果你定义了其它的文件名 请将你定义了的文件名的html页面文件保留第一行 其它的必须删除
这是因为作为返回json的数据也是会将页面代码一起返回的
所以 务必删除
#35楼
58.38.5.* 2008-12-04 15:30 |
@殷良胜
谢谢你!搞定了。。
对了,我还想请问你下,,如果我后台只是一个现存的datatable 。。如何在前台分页显示啊。。。
#36楼
117.79.68.* 2008-12-30 11:28 |
博主的
《提高篇第一篇,用EXT2_2+vs_2008_net+C动态生成GridPanel》
我运行以后只能提取到数据表的field名称,表的内容不能显示出来,表中肯定有数据,ID也肯定有(主键),换了多个表都不行,烦请解释一下。
最近对这个很感兴趣,谢谢!
#37楼
[
楼主]2008-12-30 11:41 |
@山农123456
下载源代码了吗?还是自己做的页面?
#38楼
117.79.68.* 2008-12-30 11:53 |
@殷良胜
下载了,我没有动,只是你的源码中不包括extJS2.2,我单独释放进去的,可是只能list表的字段标题,内容没有,我查看了json的response.text,也是只有标题,没有内容,为何?
而且我下载的extJS2.2中怎么没有ExtJS/resources/css/xtheme-green.css
这个文件啊?有xtheme-gray.css
谢谢!
#39楼
117.79.68.* 2008-12-30 11:55 |
要不你发给我一个完整的得了,我写上邮件地址,不知道怎么搞的会这样。
#40楼
[
楼主]2008-12-30 12:09 |
@山农123456
xtheme-gray.css 是页面的样式
xtheme-green.css 也是页面的样式
我马上上传上去吧
或者你就用xtheme-gray.css 替换就可以了
#41楼
[
楼主]2008-12-30 12:10 |
@山农123456
你用的不是vista系统吧
#42楼
[
楼主]2008-12-30 12:12 |
@山农123456
或者换IE/FF测试下
#43楼
117.79.68.* 2008-12-30 12:17 |
不是vista,是IE 6.0, xp sp3,我的环境肯定没问题.net3.5+ vs2008
xtheme-green.css我已经用xtheme-gray.css替换了,数据表有什么特殊要求吗?
#44楼
[
楼主]2008-12-30 12:24 |
@山农123456
和我用的是一样的,
数据表也没有什么要求
#45楼
[
楼主]2008-12-30 12:25 |
@山农123456
源代码本身难道还不完整吗?而且 我刚刚下载了这个版本直接加上Ext基类文件 直接就能够正常运行了这个博客园有限制,不能够上传大文件,否则早就上传了
#46楼
[
楼主]2008-12-30 13:11 |
@山农123456
list表的字段标题,内容没有,我查看了json的response.text,也是只有标题,没有内容,为何?
----------------你的数据表里面有数据吗
#47楼
117.79.68.* 2008-12-30 13:44 |
数据有好多啊
#48楼
[
楼主]2008-12-30 14:41 |
@山农123456
你确定你没有修改源文件吗?
你确定当前的定义的数据库连接字符都正确后
也能够在页面下方把该数据库拥有的数据表都能够显示出来
在点击确定后,你确定你选择的表中有数据吗?
#49楼
125.95.110.* 2008-12-30 14:49 |
楼主您好,我用的是SQL2000对row_number不支持
想请叫下你那个SQL命令应该怎么改才能在SQL2000下使用
#50楼
117.79.68.* 2008-12-30 14:52 |
我都能,不是很清楚吗?数据表都能显示出来,就是数据不显示。肯定有数据了
我没修改源文件
#51楼
117.79.68.* 2008-12-30 15:18 |
.net3.5+ vs2008 +sql2005 expres
#52楼
124.238.142.* 2008-12-30 19:32 |
楼主写代码到风格和我相似 呵呵
#53楼
[
楼主]2008-12-30 19:49 |
@北京小妹
这个代码你有空下载测试下
我测试了n遍都能够通过,可楼上的朋友总是通不过,我很纳闷
#54楼
117.79.68.* 2008-12-31 01:58 |
那敢情好,谢谢北京小妹和博主啊
#55楼
[
楼主]2008-12-31 08:05 |
@山农123456
有没有让你身边的同事也下载测试下呢?
我这边请了三个同事帮我下载测试,完全正常哦
#56楼
117.79.68.* 2008-12-31 15:21 |
我知道怎么回事儿了,你的压缩包有问题,谢谢啦
#57楼
[
楼主]2008-12-31 15:39 |
@山农123456
解决了就好 呵呵
#58楼
117.79.68.* 2009-01-01 01:15 |
问题解决,with语句2000不支持,2000+2005 :)
#59楼
117.79.68.* 2009-01-01 01:53 |
通过这个例子,一个感觉就是类似extjs的东西用处不大,纯粹属于上北京绕昌平,就是跟DIV+CSS较劲,楼主觉得呢?
#60楼
117.79.68.* 2009-01-01 02:00 |
我今天也特别说两句,第一次喔,如果想运行这个例子,假如是sql 2000+2005的话,一定要将default.aspx html码中的"服务器"的value设置为“机器名//SQLEXPRESS”,双斜置换,我就是整个后台都分局调试才发现这个问题的,with语句2005没问题。
双sql运行还是很普遍的现在。
谢谢博主了,大家都很辛苦,这么晚了,没事儿洗洗mimi吧。
#61楼
58.60.2.* 2009-01-11 13:04 |
--引用--------------------------------------------------
山农123456: 通过这个例子,一个感觉就是类似extjs的东西用处不大,纯粹属于上北京绕昌平,就是跟DIV+CSS较劲,楼主觉得呢?
--------------------------------------------------------
我不同意楼上的观点,什么叫跟DIV+CSS较劲呀,什么叫纯粹**, 什么叫类似extjs的东西用处不大呢,这是你的个人思维局限导致,早前,Ajax中的XmlHttpRequest对象,很多人不清楚它的用处时就是受到自己的思维的局限,那个时候不但多数人不知道它的存在,即使知道的也会像楼上一样看不到它的将来,我特气愤,人家写出那么好的东西来给你免费使用,国内很多人都这样,自己不会写,别人写的又小瞧,真是中国程序员的悲哀!不过,国内也有很多高手,天天在网上搜索资料,却从来都不将自己的经验外泄,或者就出书什么的,特恶心,看人家国外的高手,经常免费搞点东西给大家免费使用,特崇拜!!
#62楼
58.60.2.* 2009-01-11 13:07 |
如果有天我也是高手,要么就写博客,要么就搞开源,还是楼主说的好--【希望大家携手为中国软件为千秋万代贡献自己的..热】
#63楼
58.60.2.* 2009-01-11 13:11 |
--引用--------------------------------------------------
山农123456: 我知道怎么回事儿了,你的压缩包有问题,谢谢啦
--------------------------------------------------------
奇怪了,我解压缩为什么就没有问题呢?我用的是Xp3,但这个和系统有什么关系呢?楼上是怎么解压缩的呢?郁闷
#64楼
[
楼主]2009-01-12 22:47 |
@0011
呵呵
#65楼
119.39.172.* 2009-02-19 23:49 |
与数据库连接我总是看不懂,特别是全英文的
#66楼
[
楼主]2009-02-20 10:21 |
--引用--------------------------------------------------
zm62: 与数据库连接我总是看不懂,特别是全英文的
--------------------------------------------------------
呵呵 多看书 多实践就懂了
#67楼
121.33.147.* 2009-02-25 16:21 |
不错 不够好象有点逻辑错误 有时候明明选择了表 还提示选择的数据表为空 还有我想知道怎样给别的列加上连接 谢谢 今天才刚开始接触 菜鸟一个 不要见笑
#68楼
[
楼主]2009-02-25 16:50 |
--引用--------------------------------------------------
jerry_tang: 不错 不够好象有点逻辑错误 有时候明明选择了表 还提示选择的数据表为空 还有我想知道怎样给别的列加上连接 谢谢 今天才刚开始接触 菜鸟一个 不要见笑
--------------------------------------------------------
1,先确定下所选择的表的数据是否为空
2,仅仅给某个列的值加上一个超链接是很简单的
【在定义的某个列上加上:
{
header:"自定义要显示的字段名称",
dataIndex:"字段名称",
width:100,
renderer:function(value){return "http://www.google.com--"+value;}
}】
#69楼
121.33.147.* 2009-02-25 18:00 |
今天看了你不少文章 学了不少 十分感谢 ^^
#70楼
[
楼主]2009-02-27 10:33 |
@jerry_tang
谢谢支持
数据库连接成功,表也读出来了。但是grid里空白,什么原因。
#72楼
[
楼主]2009-03-15 09:44 |
@Sǒju_PoW
请将JsonData.aspx该页面的html代码只保留最上一行尝试下
#73楼
123.233.140.* 2009-03-31 13:05 |
ExtJS/resources/css/xtheme-green.css
ExtJS/ext-lang-zh_CN.js
我下载的官方版本好像没有这两个文件请问可以提供下载吗
#74楼
123.233.140.* 2009-03-31 13:10 |
另:我和Sǒju_PoW的问题一样,grid里空白。JsonData.aspx该页面的html代码只保留最上一行,也没问题。用的是博主的源码。
#75楼
[
楼主]2009-04-11 09:46 |
--引用--------------------------------------------------
nickyn: ExtJS/resources/css/xtheme-green.css
ExtJS/ext-lang-zh_CN.js
我下载的官方版本好像没有这两个文件请问可以提供下载吗
--------------------------------------------------------
你好
ExtJS/resources/css/xtheme-green.css 可以使用ext样式的
ExtJS/ext-lang-zh_CN.js 中文汉化 比如弹出窗口需要汉字之类的
#76楼
[
楼主]2009-04-11 09:47 |
--引用--------------------------------------------------
nickyn: 另:我和Sǒju_PoW的问题一样,grid里空白。JsonData.aspx该页面的html代码只保留最上一行,也没问题。用的是博主的源码。
--------------------------------------------------------
你好
请务必使用sql server 2005 数据库 尽量使用 vs。net 2008
#77楼
[
楼主]2009-04-11 09:48 |
--引用--------------------------------------------------
Sǒju_PoW: 数据库连接成功,表也读出来了。但是grid里空白,什么原因。
--------------------------------------------------------
你好
请务必使用sql server 2005 数据库 尽量使用 vs。net 2008
艾,我的是2000的数据库。数据和表都能读出来,但是grid的是空的。
firebug还抱了一个错误。
我还在水深火热中呢,赫赫,继续研究研究。
#79楼
[
楼主]2009-04-13 14:44 |
--引用--------------------------------------------------
子风: 艾,我的是2000的数据库。数据和表都能读出来,但是grid的是空的。
firebug还抱了一个错误。
我还在水深火热中呢,赫赫,继续研究研究。
--------------------------------------------------------
请查看数据组件中的分页语句
其中使用了sql server 2000不支持的对象,
所以,grid显示总是空。
#80楼
116.233.242.* 2009-04-28 16:57 |
wow!好东西!
#81楼
[
楼主]2009-04-28 17:31 |
--引用--------------------------------------------------
ruruya: wow!好东西!
--------------------------------------------------------
呵呵
#82楼
116.233.244.* 2009-04-29 13:50 |
wow!楼主真厉害!加油啊!
#83楼
[
楼主]2009-04-29 18:04 |
--引用--------------------------------------------------
拉: wow!楼主真厉害!加油啊!
--------------------------------------------------------
谢谢
#84楼
221.208.129.* 2009-05-05 22:46 |
伟大的主啊,,,,,还是我哈,,,,你那个综合在朋友的帮忙下弄好了,,
就是希望您能花一篇的大小讲一下newtonsoft,,,行不行,,,
#85楼
[
楼主]2009-05-06 06:52 |
--引用--------------------------------------------------
icecream: 伟大的主啊,,,,,还是我哈,,,,你那个综合在朋友的帮忙下弄好了,,
就是希望您能花一篇的大小讲一下newtonsoft,,,行不行,,,
--------------------------------------------------------
第三方的组件我也不曾去仔细研究过,有空好好研究下
#86楼
203.110.178.* 2009-06-24 11:03 |
能把这前台和后台发给我吗?
最好能把这文件发给我
我的邮箱syfeng0103@163.com
非常感谢
楼主,能发个源码给我么?
链接不能下载了
我邮箱smellflower2005@sina.com
我想问数据组件类和业务组件类都放在哪个文件里啊?