Exemplo n.º 1
0
 public static HtmlNode GetJsLinkTag(string src)
 {
     HtmlNode node = new HtmlNode("script");
     node.Attributes["type"] = "text/javascript";
     node.Attributes["src"] = src;
     return node;
 }
Exemplo n.º 2
0
 public HtmlNode GetJsBlockNode()
 {
     HtmlNode scriptNode = new HtmlNode("script");
     scriptNode.Attributes["type"] = "text/javascript";
     HtmlNode txtNode = HtmlNode.CreateTextNode(this.ToString());
     scriptNode.Append(txtNode);
     return scriptNode;
 }
Exemplo n.º 3
0
 public static HtmlNode GetCssLinkNode(string src)
 {
     HtmlNode node = new HtmlNode("link");
     node.Attributes["rel"] = "stylesheet";
     node.Attributes["type"] = "text/css";
     node.Attributes["href"] = src;
     node.ClosedTag = true;
     return node;
 }
Exemplo n.º 4
0
 /// <summary>
 /// 将node节点添加为this的子节点
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public bool Append(HtmlNode node)
 {
     if (node == null) return false;
     node.Next = null;              //丢弃node节点的下一节点信息
     this.Childs.Add(node);
     node.Depth = this.Depth + 1;
     node.Father = this;
     node.SetChildNodesDepth();
     return true;
 }
Exemplo n.º 5
0
 /// <summary>
 /// 在this节点后面插入node结点
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public bool After(HtmlNode node)
 {
     if (node == null) return false;
     if (this.Next == null) this.Next = node;
     else {
         HtmlNode tmp = this.Next;
         this.Next = node;
         node.Next = tmp;
         tmp = null;
     }
     node.Depth = this.Depth;
     node.Father = this.Father;
     return true;
 }
Exemplo n.º 6
0
 /// <summary>
 /// 从表示节点的字符串解析出节点
 /// </summary>
 /// <param name="text"></param>
 /// <returns></returns>
 public static HtmlNode ParseNode(string text)
 {
     int type = GetNodeStringType(text);
     if (type == 3) return HtmlNode.CreateTextNode(text);//文本节点
     string tagName = HtmlNode.GetNodeName(text);
     if (type == 0)
     {
         HtmlNode node = new HtmlNode(tagName);
         node.Attributes = ParseAttribute(text);
         return node;
     }
     else if (type == 2)
     {
         HtmlNode node = HtmlNode.CreateClosedNode(tagName);
         node.Attributes = ParseAttribute(text);
         return node;
     }
     else return null;
 }
Exemplo n.º 7
0
 //递归按名称查找节点
 public static void GetChildNodesByName(List<HtmlNode> list, HtmlNode node, string name)
 {
     if (node == null) return;
     if (node.Name.ToLower() == name.ToLower()) list.Add(node);
     if (node.Childs.Count != 0)
     {
         foreach (HtmlNode childNode in node.Childs)
         {
             GetChildNodesByName(list, childNode, name);
         }
     }
 }
Exemplo n.º 8
0
 public static void GetChildNodeById(List<HtmlNode> list, HtmlNode pNode, string id)
 {
     if (list.Count != 0) return;
     if (pNode.Attributes.Keys.Contains("id"))//不区分大小比较
     {
         if (pNode.Attributes["id"].ToLower() == id.ToLower())
         {
             list.Add(pNode);
             return;
         }
     }
     if (pNode.Childs.Count != 0)
     {
         foreach (HtmlNode childNode in pNode.Childs)
         {
             GetChildNodeById(list, childNode, id);
         }
     }
 }
Exemplo n.º 9
0
 public static HtmlNode CreateTextNode(string text)
 {
     HtmlNode node = new HtmlNode();
     node.OnlyText = true;
     node.InnerHTML = text;
     node.InnerText = text;
     node.Name = "";
     return node;
 }
Exemplo n.º 10
0
        public void InitStandardDocument(string title)
        {
            this._RootNode = new HtmlNode("html");
            HtmlNode head = new HtmlNode("head");
            HtmlNode titleNode = new HtmlNode("title");
            if(title!="")titleNode.Append(HtmlNode.CreateTextNode(title)); //标题非即添加文本节点
            head.Append(titleNode);

            this.RootNode.Append(head);
            HtmlNode body = new HtmlNode("body");
            this.RootNode.Append(body);
            Head = head;
            Body = body;
        }
Exemplo n.º 11
0
 public static HtmlNode CreateClosedNode(string name)
 {
     HtmlNode node = new HtmlNode(name);
     node.ClosedTag = true;
     return node;
 }
Exemplo n.º 12
0
 /// <summary>
 /// 设置VC的HTML节点
 /// </summary>
 /// <param name="context">HTML源码字符串</param>
 /// <param name="nodeName">根节点名称</param>
 /// <returns></returns>
 public bool SetVCNode(string context, string nodeName)
 {
     if (context == null || nodeName == null) return false ;
     if (context == "" || nodeName == "") return false;
     List<HtmlNode> nodesParsed = HtmlDocument.ParseNodeByName(context, nodeName);
     if (nodesParsed.Count == 0) return false;
     VCNode = nodesParsed[0];
     return true;
 }
Exemplo n.º 13
0
        public void InitPage()
        {
            FormNode = new AspxNode("form");//添加Form节点
            FormNode["id"] = "Form1";
            FormNode["method"] = "post";

            AspxNode naviBar = new AspxNode("asp:Panel");//添加导航条节点
            naviBar["id"] = "NaviPageBar";
            naviBar["visible"] = "false";
            naviBar["style"] = "Z-INDEX:100;LEFT:0px;TOP:0px";
            naviBar["height"] = "20px";
            naviBar["width"] = "100%";

            MainPanelNode = new HtmlNode("div");
            MainPanelNode["id"] = "MainPanel";
            MainPanelNode["style"] = "Z-INDEX:100;left:0px;top:0px";
            MainPanelNode["class"] = "UCML-MailPanel";

            FormNode.Append(naviBar);
            FormNode.Append(MainPanelNode);
            Body.Append(FormNode);
            //添加body属性
            Body["onload"] = "Init()";
            Body["class"] = "UCML-BODY";
            Body["leftMargin"] = "0";
            Body["topMargin"] = "0";
        }
Exemplo n.º 14
0
 public bool ParseDocument(string context)
 {
     try
     {
         _RootNode = ParseNode(context)[0];
     }
     catch (HtmlDocParseExeption e)
     {
         return false;
     }
     return true;
 }
Exemplo n.º 15
0
 //结点操作函数
 /// <summary>
 /// 在this节点前面插入node结点
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public bool Before(HtmlNode node)
 {
     return true;
 }
Exemplo n.º 16
0
 public static HtmlNode CreateInputNode(string type,string value)
 {
     HtmlNode node = new HtmlNode("input");
     node.ClosedTag = true;
     node.Attributes["type"] = type;
     node.Attributes["value"]=value;
     return node;
 }
Exemplo n.º 17
0
        /// <summary>
        /// 构建Aspx页面
        /// </summary>
        /// <returns></returns>
        public bool BuildAspxPage()
        {
            //初始化页面,构造head,body,form等基本节点
            Page.InitPage();
            Page.Head["runat"] = "server";
            //添加页面指令
            AspxDirective direc4Page = new AspxDirective("Page");
            direc4Page["language"] = "C#";
            if (this.CompileMode) direc4Page["codeBehind"] = Page.PageName + ".cs";
            else direc4Page["codeFile"] = Page.PageName + ".cs";
            direc4Page["codeFile"]= Page.PageName+".cs";
            direc4Page["Inherits"]="UCMLCommon."+this.Name;
            direc4Page["AutoEventWireup"]="False";
            direc4Page["ResponseEncoding"] = "UTF-8";

            AspxDirective direc4Reg = new AspxDirective("Register");
            direc4Reg["TagPrefix"]= "iewc";
            direc4Reg["Namespace"]="Microsoft.Web.UI.WebControls";
            direc4Reg["Assembly"]="Microsoft.Web.UI.WebControls";

            Page.Directives.Add(direc4Page);
            Page.Directives.Add(direc4Reg);
            //添加META标签
            HtmlNode metaCompatible1 = HtmlNode.CreateClosedNode("meta");
            metaCompatible1["http-equiv"] = "X-UA-Compatible";
            metaCompatible1["content"] = "IE=EmulateIE7";

            HtmlNode metaCompatible2 = HtmlNode.CreateClosedNode("meta");
            metaCompatible2["http-equiv"] = "X-UA-Compatible";
            metaCompatible2["content"] = "IE=7";
            this.Page.Head.Append(metaCompatible1);
            this.Page.Head.Append(metaCompatible2);

            //添加JS source 标签
            this.Page.Head.Append(JsContext.GetJsLinkTag("Model/rule/JSRule.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("Model/rule/initvalue.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/UCML_PublicApp.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/ig_shared.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/ig_edit.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/dnncore.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/dnn.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/dnn.dom.positioning.js"));
            this.Page.Head.Append(JsContext.GetJsLinkTag("js/ucmlapp.js"));

            //添加js 定义 标签
            JsContext js4Head = new JsContext();
            js4Head.Content.AppendLine("var UCMLResourcePath=\"\";");
            js4Head.Content.AppendLine("var UCMLLocalResourcePath=\"\";");
            js4Head.Content.AppendLine("var BPOName=\""+this.Name+"\";");
            JsFunction init = new JsFunction("Init");
            init.Content.AppendLine("var dobject=window.document.all[\"UCMLBUSIOBJECT\"];");
            init.Content.AppendLine("if (dobject==undefined) return;");
            init.Content.AppendLine(this.Name+"BPO.open();");

            string masterTable = "";
            foreach (UcmlBusiCompPropSet bc in this.BCList)
            {
                string bcBase = bc.Name + "Base";
                if (bc.IsRootBC)
                {
                    masterTable = bcBase;

                    init.Content.AppendLine(bcBase + ".fIDENTITYKey =" + bc.fIDENTITYKey.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".AllowModifyJION = " + bc.AllowModifyJION.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".fHaveUCMLKey = " + bc.fHaveUCMLKey.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".PrimaryKey = \""+bc.PrimaryKey+"\";");
                    init.Content.AppendLine(bcBase + ".Columns = "+this.Name+"BPO."+bc.Name+"Columns;");
                    init.Content.AppendLine(bcBase + ".ChangeOnlyOwnerBy = " + bc.ChangeOnlyOwnerBy.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".BPOName = \"" + this.Name + "\";");
                }
                else
                {
                    init.Content.AppendLine(bcBase + ".fIDENTITYKey = " + bc.fIDENTITYKey.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".AllowModifyJION = " + bc.AllowModifyJION.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".fHaveUCMLKey = " + bc.fHaveUCMLKey.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".PrimaryKey = \""+bc.PrimaryKey+"\";");
                    init.Content.AppendLine(bcBase + ".Columns = " + this.Name + "BPO." + bc.Name + "Columns;");
                    init.Content.AppendLine(bcBase + ".ChangeOnlyOwnerBy = " + bc.ChangeOnlyOwnerBy.ToString().ToLower() + ";");
                    init.Content.AppendLine(bcBase + ".TableType = \"S\";");
                    init.Content.AppendLine(bcBase + ".LinkKeyName = \""+bc.LinkKeyName+"\";");
                    init.Content.AppendLine(bcBase + ".PK_COLUMN_NAME = \""+bc.PK_COLUMN_NAME+"\";");
                    init.Content.AppendLine(bcBase + ".MasterTable = "+masterTable+";");
                    init.Content.AppendLine(bcBase + ".BPOName = \""+this.Name+"\";");
                }
            }

            foreach (UcmlVcTabPage vcTab in this.VcTabList)
            {
                foreach (UcmlViewCompnent vc in vcTab.VCList)
                {
                    init.Content.AppendLine(vc.VCName + ".UserDefineHTML=\"" + vc.UserDefineHTML.ToString().ToLower() + "\";");
                    init.Content.AppendLine(vc.BCName+"Base.AddConnectControls("+vc.VCName+");");

                    init.Content.AppendLine(vc.VCName+".BPOName=\""+this.Name+"\";");
                    init.Content.AppendLine(vc.VCName+".AppletName=\""+vc.VCName+"\";");
                    init.Content.AppendLine(vc.VCName + ".EnabledEdit=" + vc.EnabledEdit.ToString().ToLower() + ";");
                    init.Content.AppendLine(vc.VCName + ".haveMenu=" + vc.haveMenu.ToString().ToLower() + ";");
                    init.Content.AppendLine(vc.VCName+".parentNodeID=\"\";");
                    init.Content.AppendLine(vc.VCName+".HiddenID=\"TabStrip_"+vc.VCName+";MultiPage_"+vc.VCName+"\";");
                    init.Content.AppendLine(vc.VCName + ".fHidden=\"" + vc.fHidden.ToString().ToLower() + "\";");
                    init.Content.AppendLine(vc.VCName + ".alignHeight=\"" + vc.alignHeight.ToString().ToLower() + "\";");
                    init.Content.AppendLine(vc.VCName + ".alignWidth=\"" + vc.alignWidth.ToString().ToLower() + "\";");

                    init.Content.AppendLine(vc.VCName+".open();");
                }
            }

            foreach (UcmlBusiCompPropSet bc in this.BCList)
            {
                init.Content.AppendLine(bc.Name + "Base.EnabledEdit=true;");
                init.Content.AppendLine(bc.Name + "Base.EnabledAppend=true;");
                init.Content.AppendLine(bc.Name + "Base.EnabledDelete=true;");
                init.Content.AppendLine(bc.Name + "Base.RecordOwnerType=0;");
                init.Content.AppendLine(bc.Name + "Base.open();");
                init.Content.AppendLine(this.Name+"BPO.AddUseTable("+bc.Name+"Base);");
                init.Content.AppendLine();
            }

            init.Content.AppendLine(this.Name+"BPO.InitBusinessEnv();");
            init.Content.AppendLine();
            //把Init函数加入到JS定义 中
            js4Head.JsFuncs.Add(init);
            this.Page.Head.Append(js4Head.GetJsBlockNode());

            #region 构建主页面
            //构建主页面
            foreach (UcmlVcTabPage vcTab in this.VcTabList)
            {
                //TabStrip控件
                AspxNode tabStrip = new AspxNode("iewc:TabStrip");
                tabStrip["id"] = "TabStrip_" + vcTab.Name;
                tabStrip["TargetID"] = "MultiPage_" + vcTab.Name;
                tabStrip["CssClass"] = "UCML-TAB";
                tabStrip["TabSelectedStyle"] = "border-right:#aca899 1px solid;border-top:white 1px solid;background:#ece9d8;border-left:white 1px solid;color:#0;border-bottom:#aca899 1px solid;";
                tabStrip["TabHoverStyle"] = "border-right:#aca899 1px solid;border-top:white 1px solid;background:#ece9d8;border-left:white 1px solid;color:red;border-bottom:#aca899 1px solid;";
                tabStrip["TabDefaultStyle"] = "border-right:#aca899 1px solid;padding-right:2px;border-top:#aca899 1px solid;padding-left:2px;background:#ece9d8;padding-bottom:2px;border-left:#aca899 1px solid;padding-top:2px;border-bottom:#aca899 1px solid;";
                tabStrip["ForeColor"] = "Black";
                tabStrip["BorderColor"] = "CornflowerBlue";
                tabStrip["BackColor"] = "PapayaWhip";
                tabStrip["Font-Names"] = "Verdana";
                tabStrip["Font-Size"] = "8pt";
                tabStrip["EnableViewState"] = "False";
                //MultiPage控件
                AspxNode multiPage = new AspxNode("iewc:MultiPage");
                multiPage["id"] = "MultiPage_" + vcTab.Name;
                multiPage["width"] = "100%";//待改成变量

                //把TabStrip控件和MultiPage控件挂到MainPanelNode下
                Page.MainPanelNode.Append(tabStrip);
                Page.MainPanelNode.Append(multiPage);

                foreach (UcmlViewCompnent vc in vcTab.VCList)
                {
                    //添加Tab控件
                    AspxNode tab = new AspxNode("iewc:Tab");
                    tab["id"] = "Tab_" + vc.VCName;
                    tab["Text"] = vc.Caption;
                    //添加TabSeperator控件
                    HtmlNode tabSep = HtmlNode.CreateClosedNode("iewc:TabSeparator");
                    //挂到tabStrip下
                    tabStrip.Append(tab);
                    tabStrip.Append(tabSep);

                    //添加PageView控件
                    AspxNode pageView = new AspxNode("iewc:PageView");
                    pageView["id"] = "PageView_" + vc.VCName;
                    pageView["Text"] = vc.Caption;
                    //添加Panel控件
                    AspxNode panel = new AspxNode("asp:Panel");
                    panel["id"] = vc.VCName + "_Module";
                    panel["style"] = "overflow:hidden";
                    panel["CssClass"] = "UCML-Panel";
                    panel["width"] = "100%";//待改成变量
                    //挂载PageView到MultiPage
                    multiPage.Append(pageView);
                    //挂载Panel到PageView下
                    pageView.Append(panel);
                    //添加ToolBar
                    //添加ToolButton

                    HtmlNode pageNode = null;
                    if (vc.VCNode == null) pageNode = new HtmlNode("div");
                    else
                    {
                        if (vc.VCNode.Childs.Count == 1 && vc.VCNode.Childs[0].OnlyText) vc.VCNode.Childs.Clear();
                        pageNode = vc.VCNode;
                    }
                    //构造ContextMenu
                    HtmlNode span = new HtmlNode("span");
                    span["id"] = "theContextMenu" + vc.VCName;
                    span["style"] = "Z-INDEX:3103;LEFT:0px;VISIBILITY:hidden;BEHAVIOR: url(menubar.htc);WIDTH:200px;POSITION:absolute;TOP: 0px;HEIGHT:20px";
                    if (vc.Kind == 163)
                    {
                        panel.Append(pageNode);
                        //添加VCName Div
                        HtmlNode div = new HtmlNode("div");
                        div["id"] = vc.VCName;
                        div["style"] = "BEHAVIOR:url(UCMLDBGrid.htc);width:100%;height:200";
                        div["title"] = vc.Caption;
                        panel.Append(div);

                        div.Append(span);
                    }
                    else if (vc.Kind == 164)
                    {
                        HtmlNode div = new HtmlNode("div");
                        div["id"] = vc.VCName;
                        div["style"] = "BEHAVIOR:url(UCMLEdit.htc);Width:100%;Height:200";
                        div["title"] = vc.Caption;
                        panel.Append(div);

                        panel.Append(pageNode);
                        div.Append(span);
                    }
            #endregion 构建主页面
                }
            }

            JsContext tailJS = new JsContext();
            tailJS.Content.AppendLine("document.write('<DIV style=\"BORDER-RIGHT: #0066ff 1px solid; BORDER-TOP: #0066ff 1px solid; Z-INDEX: 103; LEFT: 201px; VISIBILITY: hidden; BORDER-LEFT: #0066ff 1px solid; WIDTH: 272px; BORDER-BOTTOM: #0066ff 1px solid; POSITION: absolute; TOP: 229px; HEIGHT: 27px; BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center\" ms_positioning=\"FlowLayout\" id=\"MsgPanel\"></DIV>');");
            JsFunction contextMenu = new JsFunction("document.oncontextmenu");
            contextMenu.Content.AppendLine("event.returnValue = false; ");
            contextMenu.Content.AppendLine("event.cancelBubble = true; ");
            contextMenu.Content.AppendLine("return false; ");
            tailJS.JsFuncs.Add(contextMenu);

            this.Page.Body.Append(tailJS.GetJsBlockNode());
            return true;
        }
Exemplo n.º 18
0
 public bool AppendNode(HtmlNode node, string pNodeMark)
 {
     if(pNodeMark.StartsWith("#"))
     {
         HtmlNode p=GetNodeById(pNodeMark.Substring(1));
         if(p!=null)p.Append(node);
         else return false;
     }
     else
     {
         List<HtmlNode> list=GetNodesByName(pNodeMark);
         if(list.Count!=0)
         {
            foreach(HtmlNode c in list)
            {
                c.Append(node);
            }
         }
         else return false;
     }
     return true;
 }