Coolite 基本用法(2)

一、

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


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) 

<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之后调用
如以下代码

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

 

原文:http://hi.baidu.com/haofz1983/blog/item/d4c8fe34b9d5f8325ab5f55f.html

转载于:https://www.cnblogs.com/AndySong/archive/2009/11/01/1593765.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于extjs的.NET3.5控件Coolite 1.0.0.34580 (Preview预览版), *************************************************** * Version 1.0.0 升级日志 * *************************************************** 1. Renamed Coolite.Ext.Web project to Ext.Net 2. Renamed Coolite.Examples project to Ext.Net.Examples 3. Renamed Coolite.Ext.UX project to Ext.Net.UX 4. Renamed Coolite.EmbeddedResourceBuilder project to Ext.Net.ERB 5. Renamed Coolite.Utilities project to Ext.Net.Utilities 6. Renamed Coolite.Sandbox project to Ext.Net.Sandbox 7. Renamed Coolite.Toolkit.sln Visual Studio Solution file to Ext.Net.sln. 8. Renamed Coolite.Ext.Web Namespace to Ext.Net 9. Renamed Coolite.Utilities Namespace to Ext.Net.Utilities 10. Renamed Coolite.Ext.UX Namespace to Ext.Net.UX 11. Renamed root singleton "Ext" class to "X". Example (Old) if (!Ext.IsAjaxRequest) { } Ext.Msg.Alert("Title", "Message").Show(); Example (New) if (!X.IsAjaxRequest) { } X.Msg.Alert("Title", "Message").Show(); 12. Added new feature to get server-side Property values from client id Token strings. Example 13. Renamed WebControl class to ExtControl. As well, renamed Coolite.Ext.Web.WebControl.cs file to Ext.Net.ExtControl.cs. 14. Removed . Please use . 15. Removed . Please use . 16. Renamed AjaxMethod class to DirectMethod. 17. Renamed AjaxMethodAttribute to DirectMethodAttribute. Example (Old) [AjaxMethod] public void DoSomthing() { } Example (New) [DirectMethod] public void DoSomthing() { } 18. Renamed property to . 19. Removed . Please use . 20. Removed Adapter class 21. Removed ColorMenuItem class 22. Removed ComboMenuItem class 23. Removed DateFieldMenuItem class 24. Removed D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值