1) 类中只能定义字段、方法、属性、索引器;
private T_CustomerBLL bll=new T_CustomerBLL(); //定义的是字段;所以不要再字段初始化时引用另外一个非static成员
2)对于安全性问题---防止文件被修改
1 思路上传:先长传文件用FTP上传;再计算文件的MD5,再次基础上加上密钥,在算一次字符串的MD5,将此算后的结果用FTP上传;
2 思路下载:先将xls文件下载;用(文件MD5+密钥);再将txt文件下载;比较是否正确;来判断是否对文件进行了修改。
3)应用程序配置---为了实现对门店编号;上传地址和密码等信息的修改;使用Appsetting其配置
4) 拼音检索;
1 思路:根据输入的字符汉字,转为拼音;然后与DB中的拼音进行like比较。
2 在DB中有两种:其一,每次like时,是将DB中的name也进行拼音转换;其二,直接在DB中增添一个拼音字段,虽然有冗余,但是提高了查询速度。
5)复合检索
1 根据勾选中的值,进行where后面的动态的拼接sql语句,
2 进行SB拼接时,要注意and和空格问题;空格可用('\n')解决;and 可用(1=1)或者string.Join("and",list.TOArray())
3 还要判断是否有选中项,即判断list.count>0;若是则先添加where,在添加list;
4 还有就是sqlParameter;也需要根据checked状态来添加sqlparameter;
6)话术管理
1 递归:就是在函数内部调用自己;需要注意的是,它是从上往下指行的。
static void Reserve(int i)
{
if (i > 0)
{
Console.WriteLine(i); //先打印10-1;
i--;
Reserve(i); //实现递归 Console.WriteLine(i); //在打印0-10;
}
}
2 递归特点:先执行递归前面的(从前往后),接着执行递归后面的(从后往前);需要知道终止条件。
//用递归实现求和
static int Sum(int i)
{
if (i < 0)
{
return 0;
}
return i+Sum(i-1);
}
3 树在DB中的存储,将ID,ParentID,存于表中,可直接得到父节点,也可以根据where得到该节点所有的子节点。
4 如果deep表示深度,那么如何知道该行数据在第几层。
5 话术管理实现思路:先找到ParentID=0;的所有根节点,遍历添加到树时,在根据Node和ID,去另个函数中找到子节点,接着在此函数中实现递归调用(即每增加一个节点就找该节点的子节点).
6 当点击时显示节点信息;所以应将节点对象放置到节点的Tag中。
7 设计话术的修改(得到选中节点将修改后的值Update回去)和新增(新增根节点;为选中的节点增新增子节点)(新增后的数据还有进行展示,此时不要进行刷新来重新加载而是应该将新增后数据添加到根节点或选中的节点上)和删除(先删除选中节点再删除此节点的子节点(ParentID=id));
8 话术搜索功能;(在name和body里面搜索到包含指定搜索词的节点),并将找到的节点高亮显示。
7)IEnumerable<>和List<>的区别是;前者只能遍历读取不能修改。

浙公网安备 33010602011771号