FineUI 官方论坛

标题: APPBOX数据库改成ACCESS [打印本页]

作者: 甘桂    时间: 2013-11-14 22:54
标题: APPBOX数据库改成ACCESS
本帖最后由 甘桂 于 2013-11-14 22:56 编辑

为了让更多新手对EF不熟悉的人使用FINEUI,为了加了推广与应用FINEUI。本人对APPBOX 2.0的代码小改一下,使用ACCESS数据库,可以建立小项目。直接在后台执行SQL语句,简短明了。
1、把SQL SERVER数据库表全部导出到ACCESS里,并把X_TABLENAME改成了Sys_TABLENAME
2、为了简单省事,去掉所有using SubSonic的引用,DLL文件删除了。CUSTOMMENU.CS,CUSTOMTREE.CS,PAGEBASE.CN这三个文件保留。(其实也可以不要的。)
3,引用数据库操作类


/// <summary>
/// access 的摘要说明
/// </summary>
public class access
{
        public access()
        {
               
        }
   // public static string connstring = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/App_Data/DataBase.mdb") + "ersist Security Info=True;Jet OLEDBatabase Password=";
    public static string connstring = "rovider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/App_Data/DataBase_fine.accdb") + ";Jet OLEDBatabase Password=PASSWORD";//OFFICE ACCESS 2007以上版本

    public static DataSet GreatDs(string sql)
    {
        OleDbDataAdapter Dar = new OleDbDataAdapter(sql, connstring);

        DataSet ds = new DataSet();
        Dar.Fill(ds);
        return ds;
    }
    public static void DoSql(string sql)
    {
        OleDbConnection conn = new OleDbConnection();//创建连接对象
        conn.ConnectionString = connstring;//给连接字符串赋值
        conn.Open();//打开数据库
        OleDbCommand cmd = new OleDbCommand(sql, conn);
        cmd.ExecuteNonQuery();//
        conn.Close();//关闭数据库
    }
}

4,重点工作如下:
    // 工具栏上的帮助菜单
            string sql = "select * from Sys_Config where ConfigKey='HelpList'";//直接SQL查询
            DataTable dt = new DataTable();
            dt = access.GreatDs(sql).Tables[0];  

            JArray ja = JArray.Parse(dt.Rows[0]["ConfigValue"].ToString());
            foreach (JObject jo in ja)
            {
                MenuButton menuItem = new MenuButton();
                menuItem.EnablePostBack = false;
                menuItem.Text = jo.Value<string>("Text");
                //menuItem.Icon = (Icon)StringUtil.EnumFromName(typeof(Icon), jo.Value<string>("Icon"));
                menuItem.Icon = IconHelper.String2Icon(jo.Value<string>("Icon"), true);
                menuItem.OnClientClick = String.Format("addExampleTab('{0}', '{1}', '{2}')", jo.Value<string>("ID"), ResolveUrl(jo.Value<string>("URL")), jo.Value<string>("Text"));

                btnHelp.Menu.Items.Add(menuItem);
            }
这个地方三石使用了数组,对一般人员维护不方面,建议直接使用TOOLS 表。就不需要再进行JARRAY处理了。名称,地址,图标维护一目了然。

/// <summary>
        /// 创建手风琴菜单
        /// </summary>
        /// <param name="menus"></param>
        /// <returns></returns>
        private Accordion InitAccordionMenu(List<CustomMenu> menus)
        {
            Accordion accordionMenu = new Accordion();
            accordionMenu.ID = "accordionMenu";
            accordionMenu.EnableFill = true;
            accordionMenu.ShowBorder = false;
            accordionMenu.ShowHeader = false;
            regionLeft.Items.Add(accordionMenu);

            string sqlacc = "select * from Sys_menu order by SortIndex";
            DataTable dtacc = new DataTable();
            dtacc = access.GreatDs(sqlacc).Tables[0];
            foreach (DataRow row in dtacc.Rows)
            {
                if (Convert.ToInt16(row["arentMenuId"].ToString()) == 0)
                {
                    AccordionPane accordionPane = new AccordionPane();
                    accordionPane.Title = row["Title"].ToString();
                    accordionPane.Layout = Layout.Fit;
                    accordionPane.ShowBorder = false;
                    accordionPane.BodyPadding = "2px 0 0 0";
                    accordionPane.IconUrl = row["ImageUrl"].ToString();
                    accordionMenu.Items.Add(accordionPane);

                    Tree innerTree = new Tree();
                    innerTree.EnableArrows = true;
                    innerTree.ShowBorder = false;
                    innerTree.ShowHeader = false;
                    innerTree.EnableIcons = false;
                    innerTree.AutoScroll = true;
                    accordionPane.Items.Add(innerTree);


                    // 生成树
                    ResolveMenuTree(menus, Convert.ToInt16(row["ID"].ToString()), innerTree.Nodes);

                }
            }

            return accordionMenu;
        }

这里在原来的代码上加了accordionPane.IconUrl = row["ImageUrl"].ToString();就是今天看到一个人在论坛里问怎么加上图标。
增加,修改,删除就不用说了。调用ACCESS类,直接使用DoSql(string sql)就OK了。
不知道大家有没有目的地明白。风格引用示例,我认为不要在数据表里调用风格了,每台电脑要有不同的风格,加载时也快。
等到三石出4.0正式版时,本人有时间为大家做APPBOX三层数据结构。本人也要求过三石这样搞,估计他没有时间。
为了更好的推广FINEUI,作出自己的一点力量!

作者: 冬天    时间: 2013-11-15 14:10
牛人一个
作者: erp8@live.cn    时间: 2013-11-17 00:30
{:soso_e179:}
作者: best999888    时间: 2013-11-18 13:02
先强烈支持一下 .       改后的源码呢?




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4