基于ASP.NET的WEBMENU的数据操作4
你当前的位置:烁空 --> 技术文档全集

程序代码如下:

USING SYSTEM;

USING SYSTEM.COLLECTIONS;

USING SYSTEM.COMPONENTMODEL;

USING SYSTEM.DATA;

USING SYSTEM.DRAWING;

USING SYSTEM.WEB;

USING SYSTEM.WEB.SESSIONSTATE;

USING SYSTEM.WEB.UI;

USING SYSTEM.WEB.UI.WEBCONTROLS;

USING SYSTEM.WEB.UI.HTMLCONTROLS;

USING SYSTEM.DATA.OLEDB;

 

NAMESPACE WEBAPPLICATION6

{

     /// <SUMMARY>

     /// WEBFORM1 的摘要说明。

     /// </SUMMARY>

     PUBLIC CLASS WEBFORM1 : SYSTEM.WEB.UI.PAGE

     {

         PROTECTED COALESYS.WEBMENU.WEBMENU CSNETMENU;

    

         PRIVATE VOID PAGE_LOAD(OBJECT SENDER, SYSTEM.EVENTARGS E)

         {

              // 在此处放置用户代码以初始化页面

              CSNETMENU.MENUBAR.ABSOLUTEDOCKENABLED = FALSE;

              CSNETMENU.MENUBAR.ABSOLUTEDRAGENABLED = FALSE;

              CSNETMENU.MENUBAR.BACKGROUNDCOLOR = "";

              CSNETMENU.MENUBAR.OUTERHIGHLIGHTCOLOR = "#666666";

              CSNETMENU.MENUBAR.OUTERSHADOWCOLOR = "#666666";

              CSNETMENU.MENUBAR.INNERSHADOWCOLOR = "#F9F8F7";

              CSNETMENU.MENUBAR.HOVERCOLOR = "#DFDFDF";

              CSNETMENU.MENUBAR.SELECTEDCOLOR = "#B6BDD2";

              CSNETMENU.MENUBAR.SELECTEDTEXTCOLOR = "#000000";

              CSNETMENU.BACKGROUNDCOLOR = "";

              CSNETMENU.SELECTEDCOLOR = "#B6BDD2";

              CSNETMENU.OUTERHIGHLIGHTCOLOR = "#C0C0C0";

              CSNETMENU.OUTERSHADOWCOLOR = "#C0C0C0";

              CSNETMENU.INNERSHADOWCOLOR = "#808080";

              CSNETMENU.POPUPICON = "./IMAGES/ARROW-BLACK.GIF";

              CSNETMENU.SELECTEDPOPUPICON = "./IMAGES/ARROW-WHITE.GIF";

              CSNETMENU.CLEARPIXELIMAGE = "./IMAGES/CLEARPIXEL.GIF";          

 

              // POPULATE WEBMENU

              LOADWEBMENUDATA(CSNETMENU);

         }

 

         //=============================================================================

         // LOADWEBMENUDATA - LOAD WEBMENU FROM DATABASE

         //

         // INPUT:

         //  CSWEBMENU - [IN] COALESYS.WEBMENU.WEBMENU OBJECT

         //

         // OUTPUT:

         //   NONE

         //

         PUBLIC VOID LOADWEBMENUDATA(COALESYS.WEBMENU.WEBMENU CSWEBMENU)

         {

              COALESYS.WEBMENU.GROUP CSMENUGROUP;

 

              // DATABASE INFO

              STRING DBCONNSTRING = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=";

              STRING DBPATHSTRING = SERVER.MAPPATH("./SELFREFERENCEDTABLE.MDB");

              STRING DBSQLSTRING = "SELECT * FROM NODES ORDER BY ID";

 

              // INITIATE OLEDB INTERFACE

              OLEDBCONNECTION DBCONN = NEW OLEDBCONNECTION(DBCONNSTRING + DBPATHSTRING);

              OLEDBCOMMAND DBCOMM = NEW OLEDBCOMMAND(DBSQLSTRING, DBCONN);

              OLEDBDATAADAPTER DBADAPTER = NEW OLEDBDATAADAPTER();

 

              DBCONN.OPEN();

 

              // FILL AN ADO.NET DATASET

              DATASET DS = NEW DATASET();

              DBADAPTER.SELECTCOMMAND = DBCOMM;

              DBADAPTER.FILL(DS, "MENUITEMS");

 

              DBCONN.CLOSE();

 

              // CREATE THE DATA RELATION BETWEEN THE ID AND PARENT_ID COLUMNS OF THE MENUITEMS TABLE.

              // (THIS IS THE KEY TO HIERARCHICAL NAVIGATING IN A SELF-REFERENCING TABLE).

              DATARELATION DR = DS.RELATIONS.ADD("MENUITEMHIERARCHY",

                   DS.TABLES["MENUITEMS"].COLUMNS["ID"],

                   DS.TABLES["MENUITEMS"].COLUMNS["PARENT_ID"]);

 

              // START TOP-DOWN NAVIGATION OF THE MENUITEM ROWS.

              FOREACH(DATAROW DBMENUITEM IN DS.TABLES["MENUITEMS"].ROWS)

              {

                   // IF THE PARENT_ID COLUM IS NULL, THEN THIS IS A ROOT MENU ITEM.

                   IF(DBMENUITEM.ISNULL("PARENT_ID"))

                   {

                       // CREATE A MENU GROUP FOR THE ROOT MENU ITEM

                       CSMENUGROUP = CSWEBMENU.GROUPS.ADD();

                       CSMENUGROUP.CAPTION = DBMENUITEM["CAPTION"].TOSTRING();

 

                       // EXECUTE THE RECURSIVE FUNCTION TO POPULATE ALL IT'S CHILDREN.

                       ADDMENUITEMS(DBMENUITEM.GETCHILDROWS(DR), DR, CSMENUGROUP);

                   }

              }

         }

 

 

         //=============================================================================

         // ADDMENUITEMS        - RECURSIVE FUNCTION TO POPULATE HIERARCHICAL MENU ITEMS

         //                       FROM DATA ROWS THAT HAVE PARENT/CHILD RELATIONSHIPS.

         //

         // INPUT:

         //   DATAROWS      - [IN] CHILD ROWS

         //  DATAREL            - [IN] DATA RELATION

         //  WEBMENUGROUP   - [IN] WEBMENU GROUP

         //

         // OUTPUT:

         //   NONE

         //

         PUBLIC VOID ADDMENUITEMS(DATAROW[] DATAROWS, DATARELATION DATAREL, COALESYS.WEBMENU.GROUP WEBMENUGROUP)

         {

              COALESYS.WEBMENU.ITEM CSMENUITEM;

              COALESYS.WEBMENU.GROUP CSNESTEDMENUGROUP;

              DATAROW[] DRCHILDREN;

 

              FOREACH(DATAROW DBMENUITEM IN DATAROWS)

              {

                   CSMENUITEM = WEBMENUGROUP.ITEMS.ADD();

                   CSMENUITEM.CAPTION = DBMENUITEM["CAPTION"].TOSTRING();

                   CSMENUITEM.URL = DBMENUITEM["URL"].TOSTRING();

                   IF (DBMENUITEM["ENABLE"].TOSTRING()=="TRUE" )

                   {

                       CSMENUITEM.ENABLED=TRUE;

                   }

                   ELSE

                   {

                       CSMENUITEM.ENABLED=FALSE;

                   }

                  

                   // CHECK IF THIS ITEM HAS CHILDREN OF IT'S OWN

                   DRCHILDREN = DBMENUITEM.GETCHILDROWS(DATAREL);

                   // IF SO, CREATE A GROUP FOR THE CHILDREN AND REENTER THIS FUNCTION.

                   IF(DRCHILDREN.LENGTH > 0)

                   {

                       CSNESTEDMENUGROUP = CSMENUITEM.ADDGROUP();

                       ADDMENUITEMS(DRCHILDREN, DATAREL, CSNESTEDMENUGROUP);

                   }

              }

         }

 

}


 

效果图如下: