1。Coolite下如何自定义控件样式表

Code
 1<style type="text/css">
 2        .x-grid3-td-fullName .x-grid3-cell-inner {}{
 3            font-family:tahoma, verdana;
 4            display:block;
 5            font-weight:normal;
 6            font-style: normal;
 7            color:#385F95;
 8            white-space:normal;
 9        }
10        
11        .x-grid3-row-body p {}{
12            margin:5px 5px 10px 5px !important;      
13            width:99%;
14         color:Gray;      
15        }
16
17    </style>
18
19            <View>
20                <ext:GridView ID="GridView1" runat="server" EnableRowBody="true">
21                    <GetRowClass Handler="rowParams.body = '<p>' + record.data.Notes + '</p>'; return 'x-grid3-row-expanded';" />                    
22                </ext:GridView>        
23            </View>    

Coolite和EXT的自定义CSS方法就是这样, 按照标准名字定义样式就行了
如.x-grid3-summary-row, 自动识别,如果还不明白,可以下载个ExtJS,进入到ext.css里面就能看到所有CSS的名字

2.
      (1)Coolite控件语言包问题,如Grid,和日期类型控件,汉化的方法

<asp:ScriptManager ID="ScriptManager2" runat="server">
        <Scripts>
           <asp:ScriptReference Path="ext-lang-zh_CN.js" />
      </Scripts>
 </asp:ScriptManager> 

(2)ScriptManager问题,如果一个页面内同时出现两个ScriptManager就会报错(导致一个页面不能做多个管理模块),如果实现让“模块”运行时,检查当前页面,是否其他模块已经存在ScriptManager,存在就不注册新的

Coolite.Ext.Web.ScriptManager scmanager = Coolite.Ext.Web.ScriptManager.GetCurrent(this.Page);
if (scmanager == null)
{
   scmanager = new Coolite.Ext.Web.ScriptManager();
   this.Controls.Add(scmanager);
}

(3)针对上面两个问题,我们在DNN在使用Coolite,并且调用汉化包,要这样使用

              if (!Page.IsPostBack)
                {

Coolite.Ext.Web.ScriptManager scmanager = Coolite.Ext.Web.ScriptManager.GetCurrent(this.Page);
                    if (scmanager == null)
                    {
                        scmanager = new Coolite.Ext.Web.ScriptManager();
                        this.Controls.Add(scmanager);
                    }

if (DotNetNuke.Framework.AJAX.IsInstalled())
                    {
                        DotNetNuke.Framework.AJAX.RegisterScriptManager();
                        System.Web.UI.ScriptManager objScriptManager = System.Web.UI.ScriptManager.GetCurrent(this.Page);
                        if (objScriptManager != null)
                        {
                            ScriptReference scr = new ScriptReference("~/js/ext-lang-zh_CN.js");
                            objScriptManager.Scripts.Add(scr);
                        }
                    }

3.Coolite和<%=this.ClientID %>

我们建立一个普通的ASP.NET网站,编写如下代码

HTML:

<ext:GridPanel 
     runat="server" 
     ID="GridPanel1" 
     .

JS:

function MSG()
{
    alert(GridPanel1);
}

这样是实现的, 但是同样把类似代码移到DotNetNuke下去实现

<ext:GridPanel 
    runat="server" 
    ID="DocmentGridPanel" 
    Title="公文管理" 
    StoreID="StoreDocumentType" 
    Height="500" Header="false">
   。。。。。。。。。

JS:
 function MSG()
{
    alert(DocmentGridPanel);
}

这样确实出错的,找不到对象DocumentGridPanel...

如何解决这个问题呢?

我观察两种代码生成的客户端代码

普通网站项目,查看页面代码
<input name="GridPanel1_SM" type="hidden" id="GridPanel1_SM" />

DNN外面有个dnn_ctr1486_DocumentType代表这个模块框
<input name="dnn$ctr1486$DocumentType$DocmentGridPanel_SM" type="hidden" id="dnn_ctr1486_DocumentType_DocmentGridPanel_SM" />

就有点明白了,DNN所有控件的外层包裹一个"容器".

我们用如下方法

<%=this.ClientID %>_DocmentGridPanel

就可以实现了

alert(<%=this.ClientID %>_DocmentGridPanel);

4.为你要删除的记录增加删除验证(Coolite) 

Code
<script type="text/javascript">  
function DelSelectedRows()
{
    Ext.MessageBox.confirm('提示', '是否要删除这些记录',function(btn)
    {
        if (btn == "yes") 
        {
            Coolite.AjaxMethods.DeleteSelectedWorkFlow();
        }
    });
}
function DelSelected(selectedID)
{
    Ext.MessageBox.confirm('提示', '是否要删除此记录',function(btn)
    {
        if (btn == "yes") 
        {
            Coolite.AjaxMethods.DeleteWorkFlow(selectedID);
        }
    });
}
</script>

<ext:Button ID="btnDelete" runat="server"  Text="删除选中" Icon="Delete">
        <Listeners>
            <Click Fn="DelSelectedRows" />
        </Listeners>
        </ext:Button>

GridPanel中。。
<Listeners>
<Command Handler="if (command=='Edit'){Coolite.AjaxMethods.EditWorkFlow(record.data.WFWorkFlowID);}else if(command='Delete'){DelSelected(record.data.WFWorkFlowID);}" />
</Listeners>    
<SelectionModel>
     <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" />
</SelectionModel>

5.Coolite的Combobox的setValue和setRawValue
Coolite的Javascript代码中的
Combobox的setValue(record.data['DesktopModuleID']);
将会使SelectedItem的Text和Value都变成
record.data['DesktopModuleID']
所以调用之后应该调用次
Combobox的setRawValue(record.data['FriendlyName']);
会改变Text的值为想显示的,SetRawValue一定要在SetValue之后调用
如以下代码

Code
var selectDesktopModule = function (selectionModel , rowIndex, record) {
        <%= DesktopModuleWindow.ClientID %>.hide(null);
        hidCtrl.setValue(record.data['DesktopModuleID']);
        hidCtrl.setRawValue(record.data['FriendlyName']);
        hidCtrl.triggers[0].show();
    }

6.关于Coolite的AjaxMetod在MasterPage或者CMS系统下使用问题
      在UserControl(ascx),MasterPage或者Page(aspx)中使用Coolite的AjaxMetod讲究是不同的

在MasterPage中或者你在类似DotNetNuke的系统中调用AjaxMetod标志的方法,默认情况下是会找不到方法的,

处理此类问题需要使用AjaxMethodProxyID,使用的方法是在类的前面加上,如下

[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.None)]
partial class ModuleRightManager : PortalModuleBase

我们先看一下几种AjaxMethodProxyID 的区别

1. None -  命名前缀是空的,调用方法时直接使用 Coolite.AjaxMethods.ajaxMethod(...)
2. ClientID - 命名前缀需要加上当前类控件的client id(客户端前缀)

如Coolite.AjaxMethods.ctl00_UC1.ajaxMethod

当然通常情况下我们Coolite.AjaxMethods.<%=this.ClientID>.ajaxMethod(...)
3. ID - 使用当前控件ID作为前缀, Coolite.AjaxMethods.UC1.ajaxMethod(...)
4. Alias - 使用别名做前缀,你可以声明自己的一个别名, Coolite.AjaxMethods.myAlias.ajaxMethod(...)
5. AliasPlusID - 别名和ID同时使用,如 Coolite.AjaxMethods.myAliasUC1.ajaxMethod(...)

在有MasterPage页面或者在类似DotNetNuke的CMS系统下使用Coolite的AJAXMethod,建议你在页面的前部加上

    [AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.ClientID)]
    public partial class PopupCustomerDetail : PortalModuleBase

转载于:https://www.cnblogs.com/aooyu/archive/2009/11/13/1602520.html

【转】近期Coolite控件的技术点总结相关推荐

  1. 转载几篇别人写的皮肤类控件的技术文章

    转载几篇别人写的皮肤类控件的技术文章 原连接:http://blog.sina.com.cn/s/blog_4c3538470100ezhu.html 实现控件的透明背景 很多情况下,我们需要控件 的 ...

  2. 探讨ASP.NET2.0中的Web控件改进技术

    全面探讨ASP.NET 2.0中的Web控件改进技术之概述(一) ASP.NET 2.0并没有抛弃1.1版本中的任何现有控件,而是增加了一组新的控件;同时还引入了若干新的控件开发技术.本系列文章将对这 ...

  3. 探讨ASP.NET 2.0中的Web控件改进技术(3)

    当你最开始在Visual Studio 2005中使用Windows表单控件或是ASP.NET Web控件时,你首先会注意到,在许多控件右上角出现一个箭头形状的小玩意儿(见图2中的示例).点击这个箭头 ...

  4. 探讨微软ASP.NET AJAX控件开发技术(服务器端)

    一.简介 到目前为止,我们已经讨论了开发Ajax控件所涉及的客户端相关技术.现在,让我们来讨论此过程中与服务器端相关的一些技术. 需要说明的是,在[客户端]篇中我们的举例本质上仅是使用ASP.NET ...

  5. php 动态 控件,PHP技术在动态网页表单控件提取中的应用研究

    曲小纳 摘要:由于电子商务及网络信息技术的飞速发展,动态网站已经逐渐取代传统的静态网站,在不断向人工智能化等方向发展.该篇文章就针对PHP这种技术在动态网页表单控件提取中的应用进行详细的阐述. 关键词 ...

  6. 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版...

    .netCHARTING报表图表控件 文档帮助手册  Ab3d.PowerToys 文档帮助手册  Ab3d.Reader3ds 文档帮助手册  ABViewer 文档帮助手册 (工程图纸文档管理系统 ...

  7. 探讨ASP.NET 2.0中的Web控件改进技术(2)

    我的观点是:ViewState有可能成为你最好的朋友,也有可能成为你最坏的敌人-这要依赖于你使用它的方式来决定.如果你在以前曾经使用过ViewState,那么,你肯定会喜欢新的ControlState ...

  8. QT利用QAxWidget加载IE浏览器控件COM技术

    2019独角兽企业重金招聘Python工程师标准>>> 如何通过QAxWidget窗口加载COM组件?本文以加载微软的IEWebBrowser2组件为列,介绍详细的步骤: 1.增加一 ...

  9. asp.net控件产品技术文档中文版

    .netCHARTING报表图表控件 文档帮助手册  Ab3d.PowerToys 文档帮助手册  Ab3d.Reader3ds 文档帮助手册  ABViewer 文档帮助手册 (工程图纸文档管理系统 ...

最新文章

  1. PyTorch中torchvision介绍
  2. js正则验证身份证号是否正确
  3. 1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...
  4. 二叉树中第二小的节点
  5. [dp之路]7.25test
  6. 2.Spring初学
  7. vuex 基本入门和使用(二)
  8. JDK自带的实用工具native2ascii.exe
  9. Gartner魔力象限到底有何“魔力”?
  10. 关于equals和hashcode方法
  11. php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法
  12. 单片机小白学步系列(十四) 点亮第一个LED的程序分析
  13. java8 streams_Java 8 Friday:使用Streams API时的10个细微错误
  14. H5 微信公众号 授权登录 前后端分离篇(后端02)
  15. Ajax,ajaxFileUpload文件上传同步代码js实现
  16. 【数据结构笔记03】算法实例:最大子列和
  17. linux 2.6内核进程调度,linux2.6内核进程调度
  18. jsmind结合php,thinkCMF5与jsMind实现文章Mind版
  19. WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)
  20. untiy游戏接入之uc_sdk(九游)

热门文章

  1. LeetCode 2057. 值相等的最小索引
  2. LeetCode 1826. 有缺陷的传感器(枚举)
  3. LeetCode 1668. 最大重复子字符串
  4. 剑指Offer - 面试题57. 和为s的两个数字(双指针)
  5. c++对象回收string类型成员时coredump_本体技术视点 | 虚拟机中引用性动态语言对象模型思考...
  6. matlab打开笔记本摄像头_基于MATLAB调用电脑摄像头获取视频和图像
  7. 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
  8. 9.数据库中的子查询
  9. springboot整合kafka_springboot整合kafka实现消息的发送消费
  10. Facebook提出生成式实体链接、文档检索,大幅刷新SOTA!