找回密码
 立即注册

QQ登录

只需一步,快速开始

moonlight108

初级会员

11

主题

65

帖子

465

积分

初级会员

积分
465

活字格认证

moonlight108
初级会员   /  发表于:2014-3-18 10:09  /   查看:17488  /  回复:20
FpSpread控件是在服务器端用代码动态生成的,现在前台页面要做表格的数据排序,怎么能在客户端实现这个排序呢?

20 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-3-18 11:04:00
沙发
回复 1楼moonlight108的帖子

  1. <SCRIPT language=javascript>
  2.    function OutOfEdit() {
  3.        FpSpread1.SortColumn(1);
  4.    }
  5. </SCRIPT>
复制代码


参考路径: Spread for ASP.NET 7.0 Product Documentation > Client-Side Scripting Reference > Scripting Members > Methods > SortColumn
回复 使用道具 举报
moonlight108
初级会员   /  发表于:2014-3-18 11:26:00
板凳
回复 2楼roger.wang的帖子

如果页面有一个静态的FpSpread控件,前台排序没有问题。
如果把FpSpread控件放在一个用户控件里,再把这个用户控件拉到页面里来,前台排序也没有问题。
我现在说的问题重点是,FpSpread控件是代码动态生成的,会有几个是不一定的,是需要页面动态添加的。
就这时候无法实现排序。代码为:
protected void Page_Load(object sender, EventArgs e)
{
            if (IsPostBack)
            {
                return;
            }
            WebUserControl1 c1 = (WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
            div1.Controls.Add(c1);
}

前台脚本排序的代码我们知道:
function Sort() {
                var spread = this.document.getElementById("<%=FpSpread1.ClientID %>");
                spread.SortColumn(spread.ActiveCol);
            }
回复 使用道具 举报
moonlight108
初级会员   /  发表于:2014-3-18 11:32:00
地板
回复 2楼roger.wang的帖子
页面很简单的,就是:
<body>
    <form id="form1" runat="server">
    <div id="div1" runat="server">
    </div>
    </form>
</body>

WebUserControl1.ascx 见附件
Spread_ASP_SortJS.rar (1.94 KB, 下载次数: 597)
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-18 11:37:00
5#
回复 3楼moonlight108的帖子

有几个spread控件不确定,导致无法获得指定Spread的ID,故无法使用前台排序的JS脚本。 这么描述没有问题吧。

抱歉,这种问题目前无明确的解决办法,只能一点一点尝试解决:
1 您试过通过在后台动态生成spread时设置排序?
2 在前台如何触发的排序操作? 点击列头吗?  能否找单机列头的父元素找到Spread再设置排序呢?
回复 使用道具 举报
moonlight108
初级会员   /  发表于:2014-3-18 11:42:00
6#
回复 2楼roger.wang的帖子

如果页面有Spread 控件,排序没问题:
<body>
    <form id="form1" runat="server">
    <div id="div1" runat="server">
        <FarPoint:FpSpread ID="FpSpread1" runat="server"
   ------
        </FarPoint:FpSpread>
    </div>
    </form>
</body>
或者有用户控件排序也没问题:
<body>
    <form id="form1" runat="server">
    <div id="div1" runat="server">
                <uc1:WebUserControl1 id="Control" runat="server"></uc1:WebUserControl1>
    </div>
    </form>
</body>

就是页面啥也没有,必须是在服务器端用LoadControl方法动态添加用户控件时,无法排序。
回复 使用道具 举报
moonlight108
初级会员   /  发表于:2014-3-18 11:47:00
7#
回复 5楼roger.wang的帖子

可以获得指定Spread的ID,每个动态生成的Spread都有唯一的key值,是GUID,能知道的。单击表头排序。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-18 15:24:00
8#
回复 7楼moonlight108的帖子

能够获得ID,请尝试通过3#您的代码,通过前端排序。
回复 使用道具 举报
moonlight108
初级会员   /  发表于:2014-3-18 16:31:00
9#
回复 8楼roger.wang的帖子

要是我的代码能排序,还用在这里问吗?
用户控件也给您了,您就试试在后台add两个用户控件实现排序,不就OK?
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-18 17:04:00
10#
回复 9楼moonlight108的帖子

抱歉,未看见您上面的demo。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部