现有代码使用an asp:repeater来构建HTML表.(强调现有设计).这是生成表的一些部分伪代码:
<asp:repeater OnItemDataBound="ItemDataBound" ... >
<headertemplate>
<table>
<thead>
<tr>
<td>Date</td>
<td>Type</td>
<td>Action</td>
</tr>
</thread>
</headertemplate>
<itemtemplate>
<tr>
<td><%# GetTextForThis((MyItem)Container.DataItem) %></td>
<td><%# GetTextForThat((MyItem)Container.DataItem) %></td>
<td><%# GetTextForTheOther((MyItem)Container.DataItem) %></td>
</tr>
</itemtemplate>
<footertemplate>
</tbody>
</table>
</footertemplate>
</asp:repeater>
Run Code Online (Sandbox Code Playgroud)
但现在需要(某些)项目以不同方式显示,并且需要使用a来完成COLSPAN=3,并且整个项目将是一个单元格:
<itemtemplate>
<tr>
<td colspan="3">
<img src="<%# GetImageSrcForFoo((MyItem)Container.DataItem) %>
<a href="<%# GetHrefForFoo((MyItem)Container.DataItem) %>
</td>
</tr>
</itemtemplate>
Run Code Online (Sandbox Code Playgroud)
鉴于:
我怎样才能做到这一点?
我希望有类似的东西:
<itemtemplate id="thisThatTheOtherItemTemplate">
<tr>
<td><%# GetTextForThis((MyItem)Container.DataItem) %></td>
<td><%# GetTextForThat((MyItem)Container.DataItem) %></td>
<td><%# GetTextForTheOther((MyItem)Container.DataItem) %></td>
</tr>
</itemtemplate>
<itemtemplate id="fooItemTemplate">
<tr>
<td colspan="3"> …Run Code Online (Sandbox Code Playgroud) 我需要你的帮助来定义XML模式中的特殊情况:包含两个元素的序列:'x'和'y',而:
<x> 元素在序列中可以显示0到未绑定的时间
<y> 元素在序列中可以出现0到1次
<x>和<y>位置可以在任何地方 - 也就是说,可以将未绑定的时间作为<x>元素,然后是单个<y>元素,然后取消绑定<x>元素.
这个问题的XML示例:
<x>stuff</x>
<y>stuff</y>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
<y>stuff</y>
<x>stuff</x>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
<x>stuff</x>
<x>stuff</x>
<y>stuff</y>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想将一个XmlDocument对象的xml发送到HTTP客户端,但我担心建议的soltuion可能不会遵守Response已设置使用的编码:
public void ProcessRequest(HttpContext context)
{
XmlDocument doc = GetXmlToShow(context);
context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetAllowResponseInBrowserHistory(true);
doc.Save(context.Response.OutputStream);
Run Code Online (Sandbox Code Playgroud)
}
如果我将编码更改为其他内容,例如Unicode,该怎么办?
public void ProcessRequest(HttpContext context)
{
XmlDocument doc = GetXmlToShow(context);
context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = System.Text.Encoding.Unicode;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetAllowResponseInBrowserHistory(true);
doc.Save(context.Response.OutputStream);
}
Run Code Online (Sandbox Code Playgroud)
请问Response.OutputStream翻译多数民众赞成被写入到它在运行中的二进制数据,并使其Unicode的?
或者Response.ContentEncoding只是提供信息?
如果ContentEncoding只是提供信息,那么以下文本字符串将返回什么内容编码?
context.Response.ContentEncoding = System.Text.Encoding.Unicode;
context.Response.Write("Hello World");
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.Write("Hello World");
context.Response.ContentEncoding = System.Text.Encoding.UTF16;
context.Response.Write("Hello World");
context.Response.ContentEncoding = System.Text.Encoding.ASCII;
context.Response.Write("Hello World");
context.Response.ContentEncoding = System.Text.Encoding.BigEndianUnicode; …Run Code Online (Sandbox Code Playgroud) 有没有办法暂停表单上的所有锚定控件暂时移动或调整大小?即:
procedure ScaleFormBy(AForm: TForm; n, d: Integer);
begin
AForm.SuspendAnchors();
try
AForm.ScaleBy(n, d);
finally
AForm.ResumeAnchors();
end;
end;
Run Code Online (Sandbox Code Playgroud)
我需要这样做,因为我正在打电话
AForm.ScaleBy(m, d);
Run Code Online (Sandbox Code Playgroud)
哪个不能正确处理锚定控件.(它将左侧+右侧或顶部+底部锚定控件推离窗体边缘.
注意:我想禁用Anchors,而不是Alignment.
我有一系列由特殊的查询分析器批处理分隔符关键字分隔的T-SQL语句:
GO
Run Code Online (Sandbox Code Playgroud)
如果一个批次失败,我需要查询分析器不尝试后续批次 - 我希望它停止处理一系列批次.
例如:
PRINT 'This runs'
go
SELECT 0/0, 'This causes an error'
go
PRINT 'This should not run'
go
Run Code Online (Sandbox Code Playgroud)
输出:
This runs
Server: Msg 8134, Level 16, State 1, Line 2
Divide by zero error encountered.
This should not run
Run Code Online (Sandbox Code Playgroud)
可能?
实际使用中的一个例子可能是:
sp_rename 'Shelby', 'Kirsten'
go
DROP VIEW PeekAView
go
CREATE VIEW PeekAViewAS
SELECT * FROM Kirsten
go
Run Code Online (Sandbox Code Playgroud) 我正在尝试验证我正在制作的表单的驾驶执照.我试图使用一个正则表达式.
我是正则表达式的新手我正在谷歌搜索试图解决它.对此的帮助将不胜感激.
我们感兴趣的是从支持共享或链接文件概念的源代码控制系统转移.
共享文件是指:在一个项目中修改的文件,自动更新在使用每一个其他项目改变同一文件.如果没有开发人员不得不请求它,反向集成它,请求它,甚至想要它,它都可以做到这一点.
我们试图查看是否有其他常用的源控制系统能够满足我们的需求,并包括链接或共享文件.我的有限研究表明:
还要别的吗?(除了我们目前的源代码控制产品,显然)
看一下Windows tooltips类提示窗口,我看到它在提示窗口的实际矩形之外绘制了它的阴影.
使用SpyXX - 我可以获得工具提示的窗口rect和类样式:

Rectangle: (440, 229)-(544, 249), 104x20
Restored Rect: (440, 229)-(544, 249), 104x20
Client Rect: (0, 0)-(104, 20), 104x20
Run Code Online (Sandbox Code Playgroud)
您会注意到,您看到的投影实际上位于正在绘制的窗口之外.我怎么能画外一个影子在我的窗口,而被外界我的窗口?
注意:阴影不是使用标准CS_DROPSHADOW类样式绘制的.我已通过实验证实了这一点,并且还可以在SpyXX中看到窗口的类样式; 它不使用CS_DROPSHADOW:
Windows Styles: 94000001
WS_POPUP 80000000
WS_VISIBLE 10000000
WS_CLIPSIBLINGS 4000000
TTS_ALWAYSTIP 1
Extended Styles: 00080088
WS_EX_LAYERED 80000
WS_EX_TOOLWIN 80
WS_EX_TOPMOST 8
Run Code Online (Sandbox Code Playgroud)
那我怎么能在窗外画画?
注意:尝试在桌面上绘制DC已经完成.来自Greg Schechter的重定向GDI,DirectX和WPF应用程序:
从屏幕上绘图和阅读 - Baaaad!
最后,由于我们处于重定向主题,一个特别危险的做法是写入屏幕,通过使用GetDC(NULL)并写入,或尝试执行XOR橡皮带线等.有两个写入屏幕的重要原因很糟糕:
它很昂贵...写入屏幕本身并不昂贵,但它几乎总是伴随着从屏幕读取,因为在写入屏幕时,通常会执行读取 - 修改 - 写入操作,如XOR.从视频内存表面读取非常昂贵,需要与DWM同步,并停止整个GPU管道以及DWM应用程序管道.
这是不可预测的......如果你以某种方式设法到达实际的主要部分并写入它,那么你写入主数据库的内容将保留在屏幕上的时间就不可预测.由于UCE不知道它,它可能在下一帧刷新中被清除,或者它可能持续很长时间,这取决于屏幕上需要更新的其他内容.(我们实际上不允许直接写入主数据库,因为这个原因......例如,如果您尝试访问DirectDraw主数据库,DWM将关闭,直到访问应用程序退出)
我有一个过程将行从一个数据库移动到另一个数据库.由于某些循环外键引用链,我无法从旧数据库中删除行,也无法将它们插入到新数据库中.
由于整个操作发生在事务1中,我希望SQL Server在我调用之前忽略引用完整性故障COMMIT TRANSACTION.
例如2:
Table: Turboencabulators Table: Marselvanes
========================= =======================
PK TurboencabulatorID int /-> PK MarselvaneID int
^ MarselvanesID int --/ HasGrammeter bit
| PantametricFan varchar(50)
+------------------------------- TurboencabulatorID int
Run Code Online (Sandbox Code Playgroud)
如果我尝试在新表中插入turboencabulator,它将失败,而marselvane已经存在.撤销订单也有同样的问题.
尝试删除旧行时,我无法删除其中一行,直到另一行被删除.
我已经尝试过做一个n阶段系统,其中所有行都插入了外键约束设置为null的任何列.然后我更新所有插入的行,放置正确的缺失值.然后,为了删除源行,我将关闭受FK影响的所有列,然后删除实际行.3
我真正喜欢的是只做我的T-SQL操作,并让SQL Server在我尝试调用commit之前不告诉我.
1分布式
2假设
3假设我不再做了
我在SQL Server中有一个表,我希望将插入添加到表的末尾(而不是将它们插入中间的聚类键).这意味着我希望按一些列聚集的表不断增加.
这可以通过在datetime列上进行聚类来实现:
CREATE TABLE Things (
...
CreatedDate datetime DEFAULT getdate(),
[timestamp] timestamp,
CONSTRAINT [IX_Things] UNIQUE CLUSTERED (CreatedDate)
)
Run Code Online (Sandbox Code Playgroud)
但我不能保证两个Things人不会有同一时间.因此,日期时间列无法真正实现我的要求.
我可以添加一个虚拟标识 int列,并在其上添加集群:
CREATE TABLE Things (
...
RowID int IDENTITY(1,1),
[timestamp] timestamp,
CONSTRAINT [IX_Things] UNIQUE CLUSTERED (RowID)
)
Run Code Online (Sandbox Code Playgroud)
但你会发现我的桌子已经成了一个timestamp专栏; 保证单调增加的列.这正是我想要的候选群集密钥的特征.
所以我将表聚集在rowversion(又名timestamp)列上:
CREATE TABLE Things (
...
[timestamp] timestamp,
CONSTRAINT [IX_Things] UNIQUE CLUSTERED (timestamp)
)
Run Code Online (Sandbox Code Playgroud)
我没有添加虚拟标识 int列(RowID)来确保订单,而是使用我已有的.
我正在寻找的是为什么这是一个坏主意的想法; 以及其他更好的想法.
注意:社区维基,因为答案是主观的.
sql-server ×3
asp.net ×2
xml ×2
c# ×1
cvs ×1
delphi ×1
dropshadow ×1
fonts ×1
foreign-keys ×1
layout ×1
regex ×1
rowversion ×1
svn ×1
tfs ×1
timestamp ×1
unicode ×1
winapi ×1
xmldocument ×1
xsd ×1