本帖最后由 甘桂 于 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,作出自己的一点力量!
|