摘要:
最近写了一个简单的ASP.NET服务器端数据查询控件,该控件是对ASP.NET现有的GridView控件进行了一些扩展。现在分享一下成果,希望能帮助想要实现类似控件的童鞋。该控件有如下功能:自定义GridView分页;根据绑定字段及表名自动生成查询语句并执行;设置绑定字段Operator属性,自动生成查询条件;设置绑定字段CodeCategory属性,自动将代码字段转换为代码名称。导出Excel功能。示例代码如下:<asp:QueryView ID="QueryView1" runat="server" CssClass="grid&qu 阅读全文
摘要:
SRP 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。OCP 开放—封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。LSP Liskov替换原则 子类型必须能够替换掉它们的基类型。DIP 依赖倒置原则 抽象不应该依赖于细节。细节应该依赖于抽象。ISP 接口隔离原则 不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。REP 重用发布等价原则 重用的粒度就是发布的粒度。CCP 公用封闭原则 包中的所有类对于同一性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。... 阅读全文
摘要:
我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。在整个项目开发期间,业务人员和开发人员必须天天一起工作。围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。工作的软件是首要的进度度量标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该保持一个长期的、恒定的开发速度。不断地关注优秀的技能和好的设计会增强敏捷能力 阅读全文
摘要:
1. 特殊方法在类中有一些特殊的方法具有特殊的意义,如__init__和__del__方法。通常,特殊方法都被用来模仿某个行为。如果你要为你的类使用x[key]这样的索引操作,那么你只需要实现__getitem__()方法即可。名称说明__init__(self, ...)这个方法在新建对象恰好要被返回使用之前被调用。__del__(self)恰好在对象要被删除之前调用。__str__(self)在我们对对象使用print语句或是使用str()的时候调用。__lt__(self, other)当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法 阅读全文
摘要:
当程序执行的时候,可能会出现一些异常现象,这个可能是会存在的。例如,你在读文件的时候,而那个文件不存在。此时,我们可以用异常来处理。1. 错误我们来做个简单的测试,我们故意把print方法写出Print。>>> Print("Hello world")Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> Print("Hello world")NameError: name 'Print 阅读全文
摘要:
通常,一个程序都会有输入/输出,这样可以与用户进行交互。用户输入一些信息,你会对他输入的内容进行一些适当的操作,然后再输出给用户想要的结果。Python的输入/输出,我们可以用input进行输入,print进行输出,这些都是简单的控制台输入/输出,复杂的有处理文件等。1. input和printname = input("Please input your name:\n")print("Hello,", name)运行结果:Please input your name:knownHello, known2. 处理文件poem = ''& 阅读全文
摘要:
大家都知道ASP.NET中GridView导出Excel的方法。在SharePoint中SPGridView是继承GridView的一个扩展控件,那么ASP.NET中的导出方法在SharePoint中也应适用。是可以用,但是有一个问题,就是第一次点击按钮导出成功后,你再次点击按钮的话,按钮就不在有用了。于是Google了一下,找到了这篇Export GridView to Excel in web part帖子解决了问题,就是在Page_Load中注册两行Javascript脚本。protected void Page_Load(object sender, EventArgs e){ ... 阅读全文
摘要:
前面提到的操作函数和语句块是传统的面向过程编程,而编写大型程序,通常采用面向对象编程。类和对象是面向对象编程的两个主要方面,类创建一个新类型,而对象是类的实例。Python没有什么值类型与引用类型之分,它把所有事物统统看作是类。类使用class关键字来创建。1. Self类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass 阅读全文
摘要:
SharePoint中有许多自带的模板页,但有时候不能满足我们的需要。那么怎么办呢?SharePoint提供自定义模板功能,下面我们来看看一个简单自定义模板是怎么实现的。1. 安装Features要使用自定义模板功能,首先需要给自己的站点开通发布自定义模板的Feature。第一步:Site Actions --> Site Settings --> Site Collection Administration --> Site collection features --> Activate "Office SharePoint Server Publishi 阅读全文
摘要:
Python中有3中内建的数据结构——列表、元组和字典。1. 列表(List)列表用一对方括号[]表示,每项数据之间用逗号隔开。一旦你创建了一个列表,你可以对它进行添加、删除或搜索。所以列表是可以改变的。1)创建列表shoplist = ["apple", "mango", "carrot", "banana"]print("I have", len(shoplist), "items to purchase.")2)遍历for item in shoplist: print 阅读全文
摘要:
您可能已经知道SharePoint中有一个InputFormTextBox控件,设置其属性RichText为True,呈现出来的就是一个RichText编辑器。有时候需要验证这个控件是否输入字符,通常我们会想到RequiredFieldValidator控件或InputFormRequiredFieldValidator控件来做验证,试了几次,这种解决方案没有达到真正的效果。于是Google了一把,找到一篇博客Validating the SharePoint InputFormTextBox / RichText Editor using JavaScript,可以用JavaScript去验 阅读全文
摘要:
我们已经知道函数可以重用代码,那么模块可以在其他程序中被重用,模块基本上就是一个包含了所有你定义的函数和变量的文件。Python的模块的文件名必须以.py为扩展名,导入模块用import语句。1. 使用sys模块import sysprint("The command line arguments are:")for i in sys.argv: print(i)print("\n\nThe PYTHONPATH is", sys.path, "\n")2.字节编译的.pyc文件Python为了使输入模块更加快捷,将.py文件编译成字 阅读全文
摘要:
在前面我们已经见过一些Python内建函数,比如len和rang。现在我们来看看自定义函数,函数是通过def关键字来定义,后面跟函数名称和圆括号,括号内可以包含参数,该行以冒号结束,接下来是语句块,即函数体。1. 简单的sayHello函数def sayHello(): print("Hello world!")#调用函数sayHello()2. 带形参函数def printMax(a, b): if a > b: print(a, "is maximum.") else: print(b, "is maximum.")prin 阅读全文
摘要:
Python的控制语句有if、while、for、break、continue。1. if语句下面是一个猜数字游戏例子:# Filename: if.pynumber = 10guess = int(input("Enter a integer:"))if guess == number: print("Congratulations, you guessed it.")elif guess < number: print("No, it is a little higher than that")else: print(&qu 阅读全文
摘要:
1. 运算符运算符名称说明例子+加两个对象相加3 + 5得到8。"a" + "b"得到"ab"。-减得到负数或是一个数减去另一个数-5.2得到一个负数。50 - 24得到26。*乘两个数相乘或是返回一个被重复若干次的字符串2 * 3得到6。"la" * 3得到"lalala"。**幂返回x的y次幂3 ** 4得到81(即3 * 3 * 3 * 3)。/除x除以y4 / 3得到1(整数的除法得到整数结果)。4.0 / 3或4 / 3.0得到1.3333333333333333//取整余返回商的整数 阅读全文