传统的模式窗口中是使用向隐藏框架页提交,来避免submit以后弹出一个新窗口,(比如ASP时代),不过由于现在的Asp.net多数情况下都是自身PostBack,因此原来的方法变得不太行得通,为了PostBack不产生新窗口,可以使用如下办法:
这样在targetDialog.aspx中产生的任何PostBack都不会弹出新窗口.
另外传回值的情况,一般为了方便argument应该传递window对象,所以如果要在targetDialog.aspx中传值回parent主窗口的话,上述情况只是多了一层,通过parent.window.dialogArguments.document.getElementById("xxx"),就可以访问/设置主窗口中的这些控件状态值.
另一个更加简单的方法,在头中新增一行:
即可
树形结构是应用中常用的数据结构,最简单的设计类似:
id,name,parent_id
这种最简单的设计通常需要结合递归来最终形成树形UI,而且,对于要取得某一个节点的所有下级节点也不是很方便,
出于这种考虑,使用如下UDF来简化这种操作:
--取得树形结构中当前节点的所有下级节点
CREATE FUNCTION [dbo].[GetChildCategories] (@parent_id int)
RETURNS @work Table (num int IDENTITY(1,1),category_id int) AS
BEGIN
declare @childrenCount int,@currCategory_id int,@num int
set @num = 1
insert @work
select category_id
from Category_Classification
where parent_id = @parent_id
set @childrenCount = @@ROWCOUNT
while (@num <= @childrenCount)
Begin
select top 1 @currCategory_id = category_id
From @work
Where num = @num
insert @work
select category_id
From Category_Classification
where parent_id = @currCategory_id
set @childrenCount = @childrenCount + @@ROWCOUNT
set @num = @num + 1
End
Return
END
主要是将一个递归操作转化为一个单一的循环操作,就这几句代码也不知道该怎么写注释了,
未有大数据量测试.
一个加亮代码片断的工具,这个在线页面应该可以为你在页面上paste美观的code snippet节省一些时间,支持不少的脚本和开发语言,比如常用Vbscript,VB.NET,C#,sql等等,check it here:
CodeHighlighter
记得最好不用选中那个多余Enable outlining的checkbox,这样会多出类似VS.NET中的折叠效果,但是需要特定的图片,生成的html代码多了很多的img标签.
最后,需要把生成的html代码放入一个pre标签中,一段美观的code snippet就生成了.