随笔 - 135  文章 - 1 评论 - 2078 trackbacks - 136
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

QuickFlow下载
SPCAMLEditor 下载
camlquery 类库下载
Book: 《亮剑.NET:SharePoint Server 2007开发实战》
昵称:jianyi
园龄:4年10个月
粉丝:72
关注:7

搜索

 
 

随笔分类(125)

My Friends

wss

积分与排名

  • 积分 - 258349
  • 排名 - 289

最新评论

阅读排行榜

评论排行榜

推荐排行榜

先看看SPGridView能实现的效果:
1)分组,分页

2)下拉菜单

3)过滤

以上效果是不是跟系统的列表一模一样?

SPGridView继承于GrieView,拥有GridView的所有功能,并扩展了以上功能。

下面讲述SPGridView的两种用法:采用自定义数据源和采用WSS的列表作为数据源。

利用SPGridView显示自定义数据源

Step1:
新建一个页面,写入如下内容:
<%@ Page MasterPageFile="~/_layouts/application.master"   Language="C#" AutoEventWireup="true"  CodeFile="SPGridViewTest.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Namespace
="Microsoft.SharePoint.WebControls" TagPrefix="cc1" 
%>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderMain" runat="server">
        
<cc1:SPGridView ID="SPGridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="3" >
            
<AlternatingRowStyle CssClass="ms-alternating" />
            
<SelectedRowStyle CssClass="ms-selectednav" Font-Bold="True" />
        
</cc1:SPGridView>
        
<div style="text-align:center">
    
<cc1:SPGridViewPager ID="SPGridViewPager1" runat="server" GridViewId="SPGridView1">    
    
</cc1:SPGridViewPager></div>
 
</asp:Content>
注意:
SPGridView不支持自动生成列,所以 一定要设置AutoGenerateColums为false。
SPGridView直接启用了分页,并且,页面放入一个SPGrieViewPager,来实现分页。
Step2:
在CodeFile里写一个提供测试数据的函数:
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

public DataTable GetDataTable()
    
{
        DataTable tblData 
= new DataTable();
        tblData.Columns.Add(
"Title");
        tblData.Columns.Add(
"Author");
        tblData.Columns.Add(
"Rating");

        tblData.Rows.Add(
"Obsession""Robards, Karen"2);
        tblData.Rows.Add(
"Vanished""Robards, Karen"3);
        tblData.Rows.Add(
"Magician: Apprentice""Feist, Raymong E."4);
        tblData.Rows.Add(
"Magician: Master""Feist, Raymong E."5);
        tblData.Rows.Add(
"Silverthorn""Feist, Raymong E."4);
        tblData.Rows.Add(
"Lord Foul's Bane""Donaldson, Stephen R."3);
        tblData.Rows.Add(
"The Illearth War""Donaldson, Stephen R."4);

        
return tblData;
    }

Step3:
在Page_Load里写代码,加入ObjectDataSource控件,用这个控件来调用上面的GetDateTable函数。
  ObjectDataSource odsDataSource = new ObjectDataSource();
        odsDataSource.ID 
= "ExampleSource";
        odsDataSource.TypeName 
= this.GetType().FullName + "," + this.GetType().Assembly.FullName;
        odsDataSource.SelectMethod 
= "GetDataTable";
        Controls.Add(odsDataSource);
有人可能要奇怪了,为什么要用ObjectDataSource来调用GetDataTable,直接给SPGridView的DataSource属性赋值不行吗?
答案是:可以的。但是,那样的话,你就不的不再写一些代码来处理SPGridView的过滤和排序事件 。而ObjectDataSource是可以自动来处理这些事件的。
Step4:继续在Page_Load写代码,设置SPGridView的过滤格式和过滤属性,如果不这样设置的话,过滤功能不会起效(这个设置可是我起早摸黑,用reflector看它的代码才发现的...)。
   //{0}表示过滤值,{1}表示过滤字段值
        SPGridView1.FilteredDataSourcePropertyFormat = "{1}='{0}'";
        SPGridView1.FilteredDataSourcePropertyName 
= "FilterExpression" ;   
        SPGridView1.EnableViewState 
= false;
Step4:继续在Page_Load写代码,添加字段,并启用排序 :
//添加字段
        SPBoundField col = new SPBoundField();
        col.DataField 
= "Title";
        col.SortExpression 
= "Title";
        col.HeaderText 
= "Title";
        SPGridView1.Columns.Add(col);

        col 
= new SPBoundField();
        col.DataField 
= "Author";
        col.SortExpression 
= "Author";
        col.HeaderText 
= "Author";
        SPGridView1.Columns.Add(col);

        col 
= new SPBoundField();
        col.DataField 
= "Rating";
        col.SortExpression 
= "Rating";
        col.HeaderText 
= "Rating";
        SPGridView1.Columns.Add(col);
        SPGridView1.AllowSorting 
= true;
Step5:设置过滤字段:
SPGridView1.AllowFiltering = true;

SPGridView1.FilterDataFields 
= ",Author,Rating";
注意 :开始的列如果不启用过滤需要加 “,”。

Step6:继续在Page_Load写代码,设置分组:
//设置分组
        SPGridView1.AllowGrouping = true;
        SPGridView1.AllowGroupCollapse 
= true;
        SPGridView1.GroupField 
= "Title";
        SPGridView1.GroupDescriptionField 
= "Title";
        SPGridView1.GroupFieldDisplayName 
= "分组:";
Step7:Continue...,添加一个有下拉菜单的字段:
  //添加下拉菜单字段
        SPMenuField colMenu = new SPMenuField();
        colMenu.HeaderText 
= "Presenter Name";
        colMenu.TextFields 
= "Title";

        
//指定关联的菜单ID
        colMenu.MenuTemplateId = "PresenterListMenu";
        colMenu.NavigateUrlFields 
= "Title,Rating";
        colMenu.NavigateUrlFormat 
= "do.aspx?p={0}&q={1}";
        colMenu.TokenNameAndValueFields 
= "EDIT=Title,NAME=Rating";
        colMenu.SortExpression 
= "Title";

        
//菜单
        MenuTemplate presenterListMenu = new MenuTemplate();
        presenterListMenu.ID 
= "PresenterListMenu";

        
//菜单项
        MenuItemTemplate biogMenu = new MenuItemTemplate(
            
"Read Biography""/_layouts/images/EawfNewUser.gif");
        biogMenu.ClientOnClickNavigateUrl 
= "do.aspx?this=%EDIT%&that=%NAME%";
        
//entry.ClientOnClickScript = "your javascript here";
        presenterListMenu.Controls.Add(biogMenu);

        
//菜单项
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
                
"Recent Broadcasts""/_layouts/images/ICWM.gif");
        presenterListMenu.Controls.Add(broadcastMenu);

        
//分割线
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
        presenterListMenu.Controls.Add(sepMenu);

        
//菜单项
        MenuItemTemplate favMenu = new MenuItemTemplate(
               
"Add to Favorites""/_layouts/images/addtofavorites.gif");
        presenterListMenu.Controls.Add(favMenu);

        
this.Controls.Add(presenterListMenu);
        SPGridView1.Columns.Add(colMenu);
Step8:绑定数据源:
   //绑定数据源
        this.SPGridView1.DataSourceID = "ExampleSource";
        
this.SPGridView1.DataBind();            
OK,可以看效果了~
注意:SPGridView一定要在WSS的环境中使用,所以各位做测试的时候需要把页面放到layouts中。
整个Page_Load的代码如下:
Page_Load

利用SPGridView显示列表的数据

只要把数据源控件换成SPDataSource,然后利用SPDataSource连接相应的列表即可:
        SPDataSource odsDataSource = new SPDataSource();
        odsDataSource.ID 
= "ExampleSource";
        Controls.Add(odsDataSource);
        SPSite site 
= new SPSite("http://ssjin073:9032");
        SPList list 
= site.RootWeb.GetListFromUrl("http://ssjin073:9032/Lists/List/AllItems.aspx");
        odsDataSource.List 
= list;

整个Page_Load代码如下:
 protected void Page_Load(object sender, EventArgs e)
    
{
        SPDataSource odsDataSource 
= new SPDataSource();
        odsDataSource.ID 
= "ExampleSource";
        Controls.Add(odsDataSource);
        SPSite site 
= new SPSite("http://ssjin073:9032");
        SPList list 
= site.RootWeb.GetListFromUrl("http://ssjin073:9032/Lists/List/AllItems.aspx");
        odsDataSource.List 
= list;
        Response.Write(SPGridView1.FilterFieldName);

        SPGridView1.FilteredDataSourcePropertyFormat 
= "{1}='{0}'";
        SPGridView1.FilteredDataSourcePropertyName 
= "FilterExpression" ;    

        
this.SPGridView1.AutoGenerateColumns = false;
        SPGridView1.EnableViewState 
= false;

        
//添加字段
        SPBoundField col = new SPBoundField();
        col.DataField 
= "标题";
        col.SortExpression 
= "标题";
        col.HeaderText 
= "标题";
        SPGridView1.Columns.Add(col);

        col 
= new SPBoundField();
        col.DataField 
= "Origin";
        col.SortExpression 
= "Origin";
        col.HeaderText 
= "Origin";
        SPGridView1.Columns.Add(col);

        SPGridView1.AllowSorting 
= true;

        SPGridView1.AllowFiltering 
= true;

        SPGridView1.FilterDataFields 
= ",标题";

        
//设置分组
        SPGridView1.AllowGrouping = true;
        SPGridView1.AllowGroupCollapse 
= true;
        SPGridView1.GroupField 
= "Origin";
        SPGridView1.GroupDescriptionField 
= "Origin";
        SPGridView1.GroupFieldDisplayName 
= "分组:";

        
        
//添加下拉菜单字段
        SPMenuField colMenu = new SPMenuField();
        colMenu.HeaderText 
= "Presenter Name";
        colMenu.TextFields 
= "标题";

        
//指定关联的菜单ID
        colMenu.MenuTemplateId = "PresenterListMenu";
        
//colMenu.NavigateUrlFields = "标题";
       
// colMenu.NavigateUrlFormat = "do.aspx?p={0}&q={1}";
        
//colMenu.TokenNameAndValueFields = "EDIT=Title,NAME=Rating";
        
//colMenu.SortExpression = "Title";

        
//菜单
        MenuTemplate presenterListMenu = new MenuTemplate();
        presenterListMenu.ID 
= "PresenterListMenu";

        
//菜单项
        MenuItemTemplate biogMenu = new MenuItemTemplate(
            
"Read Biography""/_layouts/images/EawfNewUser.gif");
        biogMenu.ClientOnClickNavigateUrl 
= "do.aspx?this=%EDIT%&that=%NAME%";
        
//entry.ClientOnClickScript = "your javascript here";
        presenterListMenu.Controls.Add(biogMenu);

        
//菜单项
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
                
"Recent Broadcasts""/_layouts/images/ICWM.gif");
        presenterListMenu.Controls.Add(broadcastMenu);

        
//分割线
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
        presenterListMenu.Controls.Add(sepMenu);

        
//菜单项
        MenuItemTemplate favMenu = new MenuItemTemplate(
               
"Add to Favorites""/_layouts/images/addtofavorites.gif");
        presenterListMenu.Controls.Add(favMenu);

        
this.Controls.Add(presenterListMenu);
        SPGridView1.Columns.Add(colMenu);        
         

        
//绑定数据源
        this.SPGridView1.DataSourceID = "ExampleSource";
        
this.SPGridView1.DataBind();             
    }
注意:此代码要正常运行,测试用的列表必须有标题和Origin两个字段。
除了用代码给SPGridView添加字段,适应于GridView的一切手段都是可以应用到SPGridView的,
比如,你可以添加一个模板字段(TemplateFiled),模板内容当然可以按需控制了。

下载所有示例代码:http://files.cnblogs.com/jianyi0115/PageTest.rar

posted on 2008-04-03 21:06 jianyi 阅读(6731) 评论(56) 编辑 收藏

FeedBack:
#1楼 2008-04-06 20:29 lickies2[未注册用户]
强....我来帮忙顶来了!!
 回复 引用   
#2楼 2008-04-08 16:50 风中的猪儿      
一看标题就猜到是jianyi写的,结果真的是
嘿嘿,我来捧场~~
果然是很强大啊,留名,回去细看

 回复 引用 查看   
#3楼 2008-04-08 16:58 eyes[未注册用户]
楼主的强大令我佩服得五体投地~~~=。=最近很需要SPGridView的资料,感谢楼主的无私分享精神!~~~~
 回复 引用   
#4楼 2008-04-10 09:02 eyes[未注册用户]
关于分组和过滤的问题,我的数据源是ObjectDataSource,开启了过滤以后,在下拉列表中除了过滤的选项外还会出现升序排列,降序排列这2项.
例如有一个列表设置了分组和过滤原来显示为:
测试字母
+1111111
a
c
+2222222
b
d
当选择了测试字母这一列的升序排列后,显示为:
测试字母
+1111111
a
+2222222
b
+1111111
c
+2222222
d
但是我想得到的结果显然不是这个,既然分组了,就希望先以分组的字段,再以手动选择排序的字段进行排序.我试过设置排序表达式,但那只对GridView默认的排序有效,对Filter里面的排序无效~~~~~希望楼主赐教!~~~

 回复 引用   
#5楼[楼主2008-04-10 23:15 jianyi      
@eyes
分组的字段只是用来分组的,跟排序没关系...好像SPGridView就是这么实现的。

 回复 引用 查看   
#6楼 2008-04-14 11:34 泡饭      
非常感谢分享啊...

;-)

 回复 引用 查看   
怎么样给SPGridView添加一个linkbutton呀.
 回复 引用   
#8楼[楼主2008-05-22 20:19 jianyi      
@李保军
跟GridView一样。

 回复 引用 查看   
#9楼 2008-05-23 17:14 eyes[未注册用户]
楼主,请问如何在后台用编程的方法添加一个linkbutton并绑定ObjectDataSource里的某个列噢~~~我实现了ITemplate这个接口可以添加Linkbutton但是不知道怎样绑定数据~~~
 回复 引用   
#10楼[楼主2008-05-24 10:58 jianyi      
@eyes
ObjectDataSource不是很熟,反正你要知道SPGridView是继承于GridView的,
GridView能实现的,SPGridView也可以实现,虽然在VS里编辑的时候可能没有智能提示,没关系,你先用GridView编辑好,然后改成SPGridView即可。

 回复 引用 查看   
感谢楼主分享
 回复 引用   
#12楼 2008-09-03 10:40 eyes[未注册用户]
楼主,请问我用SPGridView+ObjectDataSoure的方式,现在分页了,但是我用SPGridView1.Rows.Count返回的是当前页的数量,我怎样才能获取总的数量啊?
 回复 引用   
#13楼[楼主2008-09-03 21:55 jianyi      
@eyes
数据源总是你控制的吧?有了数据源还不知道总数量吗?

 回复 引用 查看   
#14楼 2008-09-05 09:48 cdboy      

根据楼主的方法我使用了ObjectDataSource的方式,实现文中提到的功能(分组、过滤、菜单、排序)等等功能。

我在启用分页功能后,在使用数据过滤功能时出现了错误,不知道是什么原因,出错图片如下(点击“专题名称”出现下拉菜单后不久):

image

 


 回复 引用 查看   
#15楼[楼主2008-09-06 10:30 jianyi      
@cdboy
haha,分页+过滤得操做到没试过...

 回复 引用 查看   
额,我想看分页,分页分页,困扰一星期了,

 回复 引用   
我想看关键的分页,困扰一星期。
 回复 引用   
#18楼 2008-09-10 14:51 1895[未注册用户]
@donegal irish
是不是在绑定数据的时候加了ISPOSTBACK的判断,去掉试试

 回复 引用   
#19楼 2008-10-16 11:45 仓鼠[未注册用户]
请问下楼主,二级分组可以实现吗?我怎么都实现不了呢。
 回复 引用   
#20楼[楼主2008-10-16 14:55 jianyi      
@仓鼠
貌似不支持

 回复 引用 查看   
#21楼 2008-11-19 11:10 麻将      
我的GetDataTable方法里的数据是根据页面上的一些textbox、dropdownlist之类的控件值动态生成的
用objectDataSource绑定的方法在databind的时候会刷页面,控件也都会变成空值,viewstate也存不住,有什么解决办法没?
我的程序是写在webpart里的
谢谢

 回复 引用 查看   
#22楼[楼主2008-11-19 23:01 jianyi      
@麻将
直接在PageLoad中给DataSource赋值。或者,objectDataSource本身就支持将页面控件的属性值传递到相应的函数中,自己查查objectDataSource的用法吧。

 回复 引用 查看   
我觉的可以在写SQL语句的时候加个order by 可以解决这个问题
 回复 引用   

--引用--------------------------------------------------
eyes: 关于分组和过滤的问题,我的数据源是ObjectDataSource,开启了过滤以后,在下拉列表中除了过滤的选项外还会出现升序排列,降序排列这2项.
<br>例如有一个列表设置了分组和过滤原来显示为:
<br> 测试字母
<br>+1111111
<br> a
<br> c
<br>+2222222
<br> b
<br> d
<br>当选择了测试字母这一列的升序排列后,显示为:
<br> 测试字母
<br>+1111111
<br> a
<br>+2222222
<br> b
<br>+1111111
<br> c
<br>+2222222
<br> d
<br>但是我想得到的结果显然不是这个,既然分组了,就希望先以分组的字段,再以手动选择排序的字段进行排序.我试过设置排序表达式,但那只对GridView默认的排序有效,对Filter里面的排序无效~~~~~希望楼主赐教!~~~
--------------------------------------------------------
我觉的可以在写SQL语句的时候加个order by 可以解决这个问题

 回复 引用   
just like this:
public partial class SPGridViewTest : System.Web.UI.Page
{
protected SPGridView GVCollect;

protected void Page_Load(object sender, EventArgs e)
{
ObjectDataSource odsDataSource = new ObjectDataSource();
odsDataSource.ID = "ExampleSource";
odsDataSource.TypeName = this.GetType().FullName + "," + this.GetType().Assembly.FullName;

odsDataSource.SelectMethod = "GetDataTable";
Controls.Add(odsDataSource);

//{0}表示过滤值,{1}表示过滤字段值
//GVCollect.FilteredDataSourcePropertyFormat = "{1}='{0}'";
//GVCollect.FilteredDataSourcePropertyName = "FilterExpression";
GVCollect.EnableViewState = false;
//添加字段
SPBoundField col = new SPBoundField();
col.DataField = "MBname";
col.SortExpression = "MBname";
col.HeaderText = "姓名";
GVCollect.Columns.Add(col);

col = new SPBoundField();
col.DataField = "GZlx";
col.SortExpression = "GZlx";
col.HeaderText = "工资类型";
GVCollect.Columns.Add(col);

col = new SPBoundField();
col.DataField = "GZjbjbgzxj";
col.SortExpression = "GZjbjbgzxj";
col.HeaderText = "固定工资";
GVCollect.Columns.Add(col);



GVCollect.AllowGrouping = true;
GVCollect.AllowGroupCollapse = true;
GVCollect.GroupField = "BMname";
GVCollect.GroupDescriptionField = "BMname";
GVCollect.GroupFieldDisplayName = "小计";

this.GVCollect.DataSourceID = "ExampleSource";
this.GVCollect.DataBind();
}

public DataTable GetDataTable()
{
DataTable tblData = new DataTable();
string strsql = "select * from tabGZ order by BMname";
tblData = SqlHelper.ReturnDataTable(SqlHelper.connectionString, CommandType.Text, strsql, null);
return tblData;
}

 回复 引用   
#26楼 2008-12-18 03:43 zhg_ren[未注册用户]
Jianyi和各位,

你们好,谢谢分享。
我发现一个问题,当两个SPGridview在同一网页上时,对位于上面的
SPgridview进行清除筛选时会清除位于下面的SPgridview的筛选。我已
让所有的ID 有不同的值,但问题仍在。 请问有解决的办法吗?多谢。

 回复 引用   
#27楼 2008-12-24 10:02 lxrc[未注册用户]
我把上面的源代码帖过来运行,其它的都正常,可就是排序菜单出不来。这是怎么回事呀??
 回复 引用   
#28楼 2009-02-05 18:20 guest[未注册用户]
The sorting arrow is on the wrong column when there is grouping (分组)! Anybody has a solution for this?
 回复 引用   
#29楼 2009-05-01 23:28 guest[未注册用户]
A fix can be found here:

http://blogs.msdn.com/valdon/archive/2009/03/11/how-to-work-around-bugs-in-the-spgridview-control.aspx

--引用--------------------------------------------------
The sorting arrow is on the wrong column when there is grouping (分组)! Anybody has a solution for this?
--------------------------------------------------------

 回复 引用   
#30楼 2009-05-18 10:51 sinners
目前有个问题,如果用ObjectDataSource的话,通过List.Item.GetDataTable()方法绑定数据源,那么包含中文列名的列就会报错,要获取列的InternalName比较不方便;如果用SPDataSource的话,就不支持"FilterExpreesion"属性,有没有好的解决办法,或者用SPDataSource作为数据源的过滤方法?
 回复 引用   
#31楼 2009-10-23 16:52 lxrc[未注册用户]
jianyi大哥哥:SPGridview控件分组的话,最多能分几级呀?
 回复 引用   
#32楼[楼主2009-10-24 13:19 jianyi      
@lxrc
应该只支持一级

 回复 引用 查看   
#33楼 2009-10-26 16:13 lxrc[未注册用户]
jianyi大哥:
我现在要做一个OCS短信的扩展,就是在OCS的联系人姓名上右击,在出现的菜单中加入了“发送短信”菜单项,且在注册表中也指定了点击“发送短信”菜单项时启动的exe应用程序,可是在出现自己开发的窗体时,还会出现一个OCS本身有的会话窗体的头部窗体,上面有本地登录的用户和要发送信息的用户的名字。我现在就是想把我做的窗体放在这个头部窗体的下面。且可以随意拖动两者都同时移动。具体要如何处理?能帮帮我吗??

 回复 引用   
#34楼[楼主2009-10-26 16:49 jianyi      
@lxrc
没做过啊。。。

 回复 引用 查看   
#35楼 2009-11-09 10:29 卡徒卡墨      
Orz...Orz...
今早刚开始看SPGridView...
实习期菜鸟...

 回复 引用 查看   
#36楼 2009-11-10 12:45 Dargon[未注册用户]
LZ,我想问下
如果这个是文档库,如何做到点击该Excel,就自动打开该文件进行编辑,我现在做的只能打开该文件,编辑后也只能已副本形式保存,而不是保存在原文件上

 回复 引用   
#37楼[楼主2009-11-10 14:29 jianyi      
@Dargon
调用js函数,调用ActivieX实现,见:
http://www.cnblogs.com/jianyi0115/archive/2007/03/16/677712.html

 回复 引用 查看   
#38楼 2009-11-16 10:54 lxrc[未注册用户]
如何去掉OCS里扩展的菜单项为应用程序时,OCS自动弹出的窗体头界面?
 回复 引用   
#39楼[楼主2009-11-16 16:20 jianyi      
@lxrc
没搞过...

 回复 引用 查看   
#40楼 2009-11-17 15:01 lxrc[未注册用户]
我已经在Exchange2007中获取到了某个人的未读邮件信息,但是我就是获取不到查看未读邮件的连接地址。就是使用这个连接地址就可以直接查看某条未读邮件的具体内容了,老大,能解决不??
 回复 引用   
#41楼[楼主2009-11-17 20:11 jianyi      
@lxrc
地址是不能直接取到的,你要按照它的规则自己拼出来

 回复 引用 查看   
#42楼 2009-11-18 11:44 lxrc[未注册用户]
@jianyi
Exchange2007的连接地址跟Exchange2003是不一样的。连接地址好像加过密码,一串乱码。什么也看不出来。Exchange2003可以拼出来。

 回复 引用   
#43楼 2009-11-18 11:46 lxrc[未注册用户]
请问一下大哥:在SharePoint2007中,主页的标题没有问题,而子网站的标题始终是乱码,编码是utf-8的,显然不是这方面的原因,数据库里的Webs表中显示的标题是正确的,但如果去掉数据库里的标题的话,主页起作用,但是子网站还会出现乱码的标题。
 回复 引用   
#44楼[楼主2009-11-19 09:20 jianyi      
@lxrc
你直接改数据库了?

 回复 引用 查看   
#45楼 2009-11-19 09:28 lxrc[未注册用户]
@jianyi
改了。就是去掉了。主页上没有了。但子网站还是有。

 回复 引用   
楼主..你好..
学习SharePoint几个月了..一直以来..列表分页的问题困扰着我..
看了你这篇文章..受教了...
但是我有一个疑问..就是...SPDateSource 与 SPGridView 相互配合查询列表的数据..是不是自动的分页了列??
比如说...
查询列表的结果有1500条数据..
SPGridView 每页显示10条,也就是分了150页..
那么请问.. SPDateSource 每次都是查询的 1500条吗? 还是只查询了 SPGridView 每页所显示的内容了..?
说白了..他们是真的分页(分150页,分别进行查询每一页的内容)还是伪分页(每次查询了1500条,在这个1500条中进行筛选 SPGridView 所显示的部分 )?


 回复 引用 查看   
#47楼[楼主2010-04-11 17:24 jianyi      
@施主你不要装
首先,这篇文章中的分页方法一定不可采取的,不是数据库的分页,大数量一定不行的。SPDateSource没用过,他的数据获取过程是自动的还是要你写代码?如果写代码你自然知道是否只加载一页了。如果是自动的,你可以测试下,搞个几十万的数据看看速度怎么样。

 回复 引用 查看   
#48楼[楼主2010-04-11 17:44 jianyi      
@施主你不要装
哈哈,不好意思,原来这篇文章中用到了SPDataSource,忘记了~
不过确实不知道它是怎么分页的。
如果你是要改MOSS默认的分页方式,最好还是不要做了吧。费力不讨好,让客户凑合着用吧。

 回复 引用 查看   
@jianyi
我并不是要修改MOSS默认的分页方式..
是这样...我现在有一个网站集,端口号为86 ,86的顶级网站作为数据展示的前台页面...86下有一子网站作为后台,用于存储各种数据..
这样以来..前台的所展示的数据就需要跨站点获取..
数据展示都是采用了webpart(ascx),webpart 中有一个SPGridView ,SPGridView 的数据源来自于后台(即86下的子站点)...数据倒是可以获取...就是分页的问题..所以我现在每次都查询了1500条数据..做的伪分页..
至于1500条以外的数据就是采用多条件查询的方式去获取了...当然..每次也是1500条数据..
以上查询全部都是通过编写代码来实现的....
所以才有此一问啊...


 回复 引用 查看   
#50楼 2010-05-10 17:29 jdxyw      
你好,我有几个问题想请教:
1.过滤完之后,我如何得到过滤后的数据项(程序中),我在程序中用SPGridView.Rows去读取,还是最先原来所有的数据,并不是过滤后的数据,我该如何区别它们?
2.我加了一个Edit field去update数据项。但是在过滤之后再去Edit一个数据项,有可能出现问题。比如,原先有100个数据,过滤后有10个。我现在点击第二个的Edit,结果页面刷新之后,又重新出现所有的数据,被Edit的数据项变成了所有数据的第二个,而不是我原本想要的过滤后数据的第二个。
3.如何让SPGridView同时支持多个过滤?

谢谢

 回复 引用 查看   
#51楼[楼主2010-05-10 22:06 jianyi      
@jdxyw
好久了,忘了怎么用了~

 回复 引用 查看   
#52楼 2010-07-26 17:08 scally      
楼主,问一下,能不能用这个做多级下拉菜单?
 回复 引用 查看   
#53楼[楼主2010-07-26 17:19 jianyi      
@scally
干嘛用这个做菜单?直接用AspMenu或者Menu。

 回复 引用 查看   
#54楼 2010-07-27 09:41 scally      
哈哈,经过我们的实践终于可以做多级菜单啦。。。。。
 回复 引用 查看   
#55楼 2010-08-05 15:59 scally      
楼主,咨询个问题,我想在我想在ClientOnClickScript属性里面得到当前点击的ID怎么也拿不到呢?
 回复 引用 查看   
#56楼[楼主] 2010-08-05 16:22 jianyi      
@scally
有方法的吧。。具体忘记了

 回复 引用 查看