禁止Form窗口调整大小方法:FormBorderStyle 设为FixedSingle; 不能使用最大化窗口: MaximuzeBox 设为False; 不能使用最小化窗口: MinimizeBox 设为False; 禁止combobox输入方法:将DropDownStyle 设为DropDownList 待续……
View Detailsusing System;using System.Data;using System.Xml; //***************************************// 作者: yangtang_newton//其实用DataSet操作XML,归根到底就是对DataSet里的表格,行,列等进行操作,//然后用DataSet里的东西重新写到XML中,从而实现编辑XML的目的。如果再配合上.xsd文件的话,那效果更佳。//xsd生成方法:xsd file.xml [/outputdir:directory] [/parameters:file.xml] //*************************************** namespace USTC{/// <summary>/// OperateXmlByDataSet 的摘要说明。/// </summary>public class XmlDataSet{private string strXmlPath;//这个是相对路径public XmlDataSet(string strXmlPath){ // // TODO: 在此处添加构造函数逻辑 // this.strXmlPath=strXmlPath;} #region GetDataSetByXml/// <summary>/// 读取xml直接返回DataSet/// </summary>/// <param name="strXmlPath">xml文件相对路径</param>/// <returns></returns>public DataSet GetDataSetByXml(){ try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count > 0) { return ds; } return null; } catch(Exception) { return null; }}#endregion /* * 以下代码读取到一个没有排序和筛选的DataSet。 USTC.XmlDataSet XML=new XmlDataSet(@"XML/PortalCfg.xml");DataGrid1.DataSource = XML.GetDataSetByXml();DataGrid1.DataBind();//以下代码读到的数据是经过筛选和排序的:DataGrid1.DataSource =XML.GetDataViewByXml("name = 'Asp.net’", //条件:name列值为Asp.net"peopleNum desc"); //按peopleNum列降序排列DataGrid1.DataBind(); */ #region GetDataViewByXml/// <summary>/// 读取Xml返回一个经排序或筛选后的DataView/// </summary>/// <param name="strXmlPath"></param>/// <param name="strWhere">筛选条件,如:"name = […]
View DetailsDataSet和XML文件互操作的例子 //读取XML文件到DataSetDataSet ds = new DataSet();MyXmlPath = "C:\\Message.xml";FileStream fs = new FileStream(MyXmlPath, FileMode.Open);ds.ReadXml(fs, XmlReadMode.ReadSchema);fs.Close();//筛选行存入DataSetDataRow[] FoundRows;string Expression = "AREA IN ('" + Area + "',")";string SortOrder = "DAY DESC";FoundRows = ds.Tables[0].Select(Expression, SortOrder);DataTable Mydt = new DataTable();Mydt.Columns.Add("FKEY");Mydt.Columns.Add("IIIII");Mydt.Columns.Add("NAME");Mydt.Columns.Add("AREA");Mydt.Columns.Add("X");Mydt.Columns.Add("Y");Mydt.Columns.Add("BKIND");Mydt.Columns.Add("SKIND");Mydt.Columns.Add("DAY");Mydt.Columns.Add("ETIME");Mydt.Columns.Add("TYPE");Mydt.Columns.Add("MAIN");Mydt.Columns.Add("TTIME");foreach (DataRow dr in FoundRows){Mydt.Rows.Add(dr.ItemArray);}DataSet Myds = new DataSet();Myds.Tables.Add(Mydt);//保存到XML文件Myds.WriteXml(MyXmlPath, XmlWriteMode.WriteSchema); //ListView的一个例子XmlDocument doc = new XmlDocument();XmlDeclaration Declaration = doc.CreateXmlDeclaration("1.0","GB2312","");doc.AppendChild(Declaration);XmlElement xe = doc.CreateElement("Infos");doc.AppendChild(xe);for(int i = 0;i < listview.Items.Count;i++){XmlNode parent = doc.CreateElement("Info" + i.ToString());ListViewItem temp = listview.Items[i];for(int j = 0;j < temp.SubItems.Count;j++){string s = temp.SubItems[j].Text;XmlNode node = doc.CreateElement(s);node.InnerText = s;parent.AppendChild(node);}doc.AppendChild(parent);}doc.Save(FilePath);
View Details以前在使用VB来实现多线程的时候,发现有一定的难度。虽然也有这样那样的方法,但都不尽人意,但在C#中,要编写多线程应用程序却相当的简单。这篇文章将作简要的介绍,以起到抛砖引玉的作用! .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using System.Threading;)。 即使你没有编写多线程应用程序的经验,也可能听说过“启动线程”“杀死线程”这些词,其实除了这两个外,涉及多线程方面的还有诸如“暂停线程”“优先级”“挂起线程”“恢复线程”等等。下面将一个一个的解释。 1.启动线程 顾名思义,“启动线程”就是新建并启动一个线程的意思,如下代码可实现: Thread thread1 = new Thread(new ThreadStart( Count)); 其中的 Count 是将要被新线程执行的函数。 2.杀死线程 “杀死线程”就是将一线程斩草除根,为了不白费力气,在杀死一个线程前最好先判断它是否还活着(通过 IsAlive 属性),然后就可以调用 Abort 方法来杀死此线程。 3.暂停线程 它的意思就是让一个正在运行的线程休眠一段时间。如 thread.Sleep(1000); 就是让线程休眠1秒钟。 4.优先级 这个用不着解释了。Thread类中有一个ThreadPriority属性,它用来设置优先级,但不能保证操作系统会接受该优先级。一个线程的优先级可分为5种:Normal, AboveNormal, BelowNormal, Highest, Lowest。具体实现例子如下: thread.Priority = ThreadPriority.Highest; 5.挂起线程 Thread类的Suspend方法用来挂起线程,直到调用Resume,此线程才可以继续执行。如果线程已经挂起,那就不会起作用。 if (thread.ThreadState = ThreadState.Running) { thread.Suspend(); } 6.恢复线程 用来恢复已经挂起的线程,以让它继续执行,如果线程没挂起,也不会起作用。 if (thread.ThreadState = ThreadState.Suspended) { thread.Resume(); } 下面将列出一个例子,以说明简单的线程处理功能。此例子来自于帮助文档。 using System; using System.Threading; // Simple threading scenario: Start a static method running // on a second thread. public class ThreadExample { // The ThreadProc method is called when the thread starts. // It […]
View Details我现在正在使用vs2010英文版,平常也很少看那些有的没的文字,而且在写程序的时候很”明智”的异常捕获并且写进日志里去,所以没有出现那个可爱的调试状态下出现异常的那个小框框. 我在上网查了一会儿,有人说直接设置控件的CheckForIllegalCrossThreadCalls属性为false,但是因为可能的不安全因素所以还是不用的好.当然还有写一个委托来同步调用.但是我觉得它有点麻烦,就放弃用委托同步了. 后来我搞了好多种写法,都摆脱不了这个怨念,最终也摆脱了异常捕获并抛出了这个小框框. 框框上明确的说道:”线程间操作无效: 从不是创建控件 [控件名称] 的线程访问它。”但是在框框的Suggestion列表中显示出了一条项目,大意是:”如何:对 Windows 窗体控件进行线程安全调用.”,我点开它,并且跳进了MSDN. 原来在MSDN上就有教咱如果夸线程操作控件啊.亏我还Google半天呢. MSDN上的办法就是使用委托来同步调用控件的.具体方法我也就不卖关子了.因为MSDN上的代码比较繁多,所以我稍微改进了一下. //首先声明一个委托. delegate void SetValueDelegate(int val); //模仿程序中的跨线程调用 public void Progress() { Thread t = new Thread(() => { //跨线程由此开始 SetValue(100); }); t.Start(); } //关键部分在这里 public void SetValue(int val) { //InvokeRequired属性当非创建本控件线程操作的时候 //它返回true,此时使用窗体(该控件的创建者)的Invoke方法创建同步调用. //妙哉,妙哉! if (ProgressBar1.InvokeRequired) { var svd = new SetValueDelegate(SetValue); this.Invoke(svd, val); } else { ProgressBar1.Value = val; } } 好了,就是这样,非讨论文章就越精炼越好.希望能帮到你. 最后附上MSDN的地址:这里
View Details在ecshop2.7.0开始,底部版权Powered by ecshop如果删除了之后,就会发现Powered by ecshop到处乱跑,如何彻底删除Powered by ecshop版权呢。首先,需要打开js/common.js删除以下js函数. onload = function(){ var link_arr = document.getElementsByTagName(String.fromCharCode(65)); var link_str; var link_text; var regg, cc; var rmd, rmd_s, rmd_e, link_eorr = 0; var e = new Array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 ); try { for(var i = 0; i < link_arr.length; i++) { link_str = link_arr[i].href; if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, e[18], e[7], e[14], e[15], […]
View Details
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DBUtility { /// <summary> /// 数据库操作类 /// </summary> public abstract class SqlHelper { // 数据库连接 public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString; // 用哈希表缓存参数 private static readonly Hashtable ParmCache = Hashtable.Synchronized(new Hashtable()); /// <summary> /// 执行一个SQL语句(连接字符串) /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>返回命令影响的行数</returns> public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); using (var conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); var val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } /// <summary> /// 执行一个SQL语句(连接对象) /// </summary> /// <param name="connection">一个已经存在的连接对象</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>返回命令影响的行数</returns> public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); var val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// 执行一个SQL语句(事务) /// </summary> /// <param name="trans">一个已经存在的事务</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>an int representing the number of rows affected by the command</returns> public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); var val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// 执行一个返回DataReader的SQL语句 /// </summary> /// <param name="connectionString">一个有效的连接字符串</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>返回一个DataReader对象</returns> public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); var conn = new SqlConnection(connectionString); // we use a try/catch here because if the method throws an exception we want to // close the connection throw code, because no datareader will exist, hence the // commandBehaviour.CloseConnection will not work try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } /// <summary> /// 返回DataSet /// </summary> /// <param name="connectionString"></param> /// <param name="cmdText"></param> /// <param name="cmdParms"></param> /// <returns></returns> public static DataSet ExecuteDataSet(string connectionString, string cmdText, params SqlParameter[] cmdParms) { using (var connection = new SqlConnection(connectionString)) { var cmd = new SqlCommand(); PrepareCommand(cmd,connection,null,CommandType.Text,cmdText,cmdParms); using (var da = new SqlDataAdapter(cmd)) { var ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (SqlException ex) { throw new Exception(ex.Message); } return ds; } } } /// <summary> /// 根据SQL语句返回DataSet /// </summary> /// <param name="cmdText"></param> /// <param name="cmdParms"></param> /// <returns></returns> public static DataSet Query(string cmdText, params SqlParameter[] cmdParms) { using (var connection = new SqlConnection(ConnectionStringLocalTransaction)) { var cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, CommandType.Text, cmdText, cmdParms); using (var da = new SqlDataAdapter(cmd)) { var ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (SqlException ex) { throw new Exception(ex.Message); } return ds; } } } /// <summary> /// 执行返回一个对象的SQL语句(连接字符串) /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>返回一个object对象,对象中只包含一列。</returns> public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); using (var connection = new SqlConnection(connectionString)) { PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); var val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// <summary> /// 执行返回一个对象的SQL语句(连接对象) /// </summary> /// <param name="connection">一个已经存在的连接对象</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="commandParameters">参数集</param> /// <returns>返回一个object对象,对象中只包含一列。</returns> public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { var cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); var val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } /// <summary> /// 添加参数集到缓存 /// </summary> /// <param name="cacheKey">缓存的名称</param> /// <param name="commandParameters">要缓存的参数集</param> public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters) { ParmCache[cacheKey] = commandParameters; } /// <summary> /// 从缓存中获取参数集 /// </summary> /// <param name="cacheKey">key used to lookup parameters</param> /// <returns>Cached SqlParamters array</returns> public static SqlParameter[] GetCachedParameters(string cacheKey) { var cachedParms = (SqlParameter[])ParmCache[cacheKey]; if (cachedParms == null) return null; var clonedParms = new SqlParameter[cachedParms.Length]; var j = cachedParms.Length; for (var i = 0; i < j; i++) clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone(); return clonedParms; } /// <summary> /// 为执行准备命令对象 /// </summary> /// <param name="cmd">command 对象</param> /// <param name="conn">连接对象</param> /// <param name="trans">事务对象</param> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">命令字符串</param> /// <param name="cmdParms">参数集</param> private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, IEnumerable<SqlParameter> cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms == null) return; foreach (var parm in cmdParms) cmd.Parameters.Add(parm); } /// <summary> /// 是否存在记录 /// </summary> /// <param name="strSql"></param> /// <returns></returns> public static bool Exists(string strSql) { var obj = ExecuteScalar(ConnectionStringLocalTransaction, CommandType.Text, strSql); int cmdresult; if ((Equals(obj, null)) || (Equals(obj, DBNull.Value))) { cmdresult = 0; } else { cmdresult = int.Parse(obj.ToString()); } return cmdresult != 0; } /// <summary> /// 是否存在记录 /// </summary> /// <param name="strSql"></param> /// <param name="cmdParms"></param> /// <returns></returns> public static bool Exists(string strSql, params SqlParameter[] cmdParms) { var obj = ExecuteScalar(ConnectionStringLocalTransaction,CommandType.Text,strSql, cmdParms); int cmdresult; if ((Equals(obj, null)) || (Equals(obj, DBNull.Value))) { cmdresult = 0; } else { cmdresult = int.Parse(obj.ToString()); } return cmdresult != 0; } } } |
View Details
由于最近在改版一个PHP的网站程序,但原网站使用的是ASP+Access,所以要把Access数据库中的记录全部转换到Mysql中,并且新的网站所有页面使用的都是UTF-8的编码格式,于是就有了现在的问题。 不过问题终于还是在10分钟内得到解决了。先上代码: <?php$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("wenxue.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $query=odbc_do($connid,"select top 1 * from articles"); while(odbc_fetch_row($query)){ for($i=0;$i<4;$i++){ $record1[$i] = odbc_result($query,$i+1); echo iconv('gb2312′,’utf-8',$record1[$i]); echo " "; } echo "<br>"; } ?> 其实,PHP连接Access数据库的方法有很多,这里只是其中的一种。重要的是解决乱码问题,也就是iconv方法的使用(文中的粗体)。 转自:http://neville.liu.blog.163.com/blog/static/4993878120096279929917/
View Details1:如何修改网站"欢迎光临本店" 回答:languages\zh_cn\common.php文件中, $_LANG['welcome'] = '欢迎光临本店';将他修改成你需要的字样。 2:如何修改首页"热门搜索关键字" 回答:后台->系统设置->网店设置->显示设置->首页搜索关键字,修改他的内容,然后保存 3:如何修改首页标题 "Powered by ECShop" 回答:includes/lib_main.php,找到$page_title = $GLOBALS['_CFG']['shop_title'] . ' – ' . 'Powered by ECShop';修改成$page_title = $GLOBALS['_CFG']['shop_title']就可以了。 4:如何去除cshop底部查询信息的显示 回答:library/page_footer.lbi中,删除 {insert name=’query_info'} 5:如何发布首页公告 回答:后台->系统设置->商店设置->网店信息->商店公告.填写你需要的公告就可以了. 6:如何发布站内新闻 ecshop管理文章十分灵活,既可以管理帮助信息,也可以管理站内文章.站内新闻. 1:增加文章帮助信息 后台->文章分类->增加文章分类->(选择)网店帮助分类-> 填写分类的名称xxx 后台->文章列表->增加文章->选择网店帮助分类(xxx)->发布文章 2:增加站内信息,站内新闻 后台->文章分类->增加文章分类->增加一个文章顶级分类news 后台->文章类表->增加文章->选择分类news->发布文章 7:如何修改网站logo 回答:用你的logo图片替换/themes/default/images/logo.gif中图片就可以了 8:如何修改产品图片的大小 回答:在ecshop/themes/default/style.css中,找到.goodsItem .goodsimg{width:100px; height:100px; border:4px solid #eef8ff; margin-bottom:4px;}就可以控制产品图片的大小. 9:如何管理首页flash播放器 回答:后台 -> flash播放器管理 -> 增加自定义,你就可以上传和控制图片的位置 10:如何修改首页"精品推荐"栏目的more小图片 回答:模板文件中library/recommend_best.lbi中,<div class="more"><a href="../search.php?intro=best"><img src="images/more.gif" /></a></div> 中more.gif图片换成你要的图片,或者将图片换成你需要的文字. 11:如何修改首页"新品上市"栏目的more小图片 回答:模板文件library/recommend_new.lbi中,<div class="more"><a href="../search.php?intro=new"><img src="images/more.gif" /></a></div> more.gif修改成你需要的图片或者是换成你需要的文字. 12:如何手动修改支付方式排列顺序 回答:数据库表中,找到payment表,pay_order字段就是用来控制顺序的,你如果想让A支付方式排在第一,那么你需要修改该字段的值稍微大一些。 13:如何去除ecshop产品详细页产品电击率 回答:模板文件中,打开goods.dwt,删除<strong>{$lang.goods_click_count}:</strong>{$goods.click_count} 14:首页模板在哪个文件,头部模板,底部模板个什么文件名称 回答:首页模板在为index.dwt, 头部模板在library/page_header.lbi,底部文件在library/page_footer.lbi 15:网站关闭了注册,如何修改“该网店暂停注册”字样 回答:languages\zh_cn\common.php 中$_LANG['shop_register_closed'] = '该网店暂停注册';修改该文字就可以了 16:收货人详细信息js弹出框的提示脚本在哪个文件 回答:languages\zh_cn\shopping_flow.php [比如 $_LANG['flow_js']['country_not_null'] = '请您选择收货人所在国家!';] 17:网站公告代码段在那里 回答: index.php文件中, $smarty->assign('shop_notice', $_CFG['shop_notice']); // 商店公告代码段控制公告 18:网站首页"精品推荐"显示数量在那里设置 ecshop中,为了让更多更丰富的购买信息显示在首页,可以根据自己所在行业特点,根据自己所在行业购买行为的分析,在ecshop首页设置热买促销新品的数量,让版面更加合理,让用户体验. 设置ecshop首页热买商品的数量. 模板管理 -> 设置模板 -> 热买商品 (修改其显示数量)修改下面的10为你需要的数量,这就是热买商品 设置ecshop首页新品的数量. 模板管理 -> 设置模板 -> 新品上架 (修改其显示数量)修改下面的10为你需要的数量,这就是新品上架 设置ecshop首页精品的数量. 模板管理 -> 设置模板 -> 精品推荐 (修改其显示数量)修改下面的10为你需要的数量,这就是精品推荐 19:网站首页"新品上市"显示数量在那里设置 20:如何修改产品的库存 回答:商品管理 -> 商品列表 -> 选中(库存),编辑就可以了. 21:如何修改ecshop表的前缀 回答:修改data/config.php下的$prefix = "ecs_";将ecs_修改成你需要的前缀.其次,在数据库中,修改表名比如ecs_goods修改为"xxx_goods"; 22:如何去除首页flash下面的空白区域 首先.ecshop首页flash下面有两个空白的地方,第一个是用来显示促销产品的,右边是用来显示品牌的。 1:显示促销产品 后台 -> 商品管理 -> 商品列表 -> 编辑产品 -> 通用信息 -> 勾上促销价 -> 填写促销期限 -> 保存-> 更新缓存 前台flash下空白处就被填充了. 2:如何显示商品品牌列表 商品管理 -> 商品品牌 -> 增加品牌X -> 保存 增加该品牌X下的产品 商品管理 -> 增加新产品 -> 选择商品品牌 -> 保存 -> 更新缓存 23:如何修改ecshop导航栏目名称 回答:后台 -> 系统设置 -> 自定义导航栏 -> 编辑 -> 修改导航栏名称 24:如何将最新产品栏目显示在导航栏里面? 回答:后台 -> 系统设置 -> 自定义导航栏 -> 增加自定义导航,在链接的栏目中输入"search.php?intro=new" 25:如何更换ecshop模板 回答:比如新模板“test”,你将放在themes目录下,形成的路径为themes/test,然后在后台 -> 模板管理 -> 模板选择 ,起用你新加的模板就OK了。 26:ecshop产品相关的图片有那几种 回答:$goods_img = "; // 初始化商品图片 $goods_thumb = "; // 初始化商品缩略图 $original_img = "; // 初始化原始图片 $old_original_img = "; // 初始化原始图片旧图 27:ecshop首页如何设置“新品”,“精品”,“热卖”商品 回答:参照http://www.chinab4c.com/html/shangchengchengxu/ecshopchangjianwenti/2009/0706/82.html 28:如何修改“支付方式”显示顺序 回答:打开ecs_payment表,如果你想让他显示在前面,你将设置pay_order值小一些,比如想让“支付宝”排第一,“快钱”排第二,你就可以设置支付宝pay_order=1,快钱pay_order=2 29:详细页面的积分 回答:详细页面的积分在模板<strong>{$lang.goods_give_integral}</strong><font class="f4">{$goods.give_integral} {$points_name}</font>中来控制的 30:如何修改产品缩略图大小 回答:后台 -> 系统设置 -> 网店设置 -> 显示设置 -> 缩略图宽度.,当然你也可以设置缩略图高度 31:如何设置ecshop货币格式和日期格式。 回答:后台 -> 系统设置 -> 网店设置 -> 显示设置 -> 货币格式(¥%s元)或者时间格式(Y-m-d H:i:s) 32:如何开取和关闭ecshop登陆验证码 回答:后台 -> 系统设置 -> 验证码管理 ,在这里你可以操作各种验证码,开启和关闭 33:如何修改个人帐户信息里面,出生年月的范围 […]
View Details