我通过为他做一些网络工作帮助了一个朋友.他需要的部分内容是在他的网站上更改几段文字的简单方法.我没有让他编辑HTML,而是决定在其中提供带有消息的XML文件,并使用jQuery将它们从文件中拉出并将它们插入到页面中.
它很棒......在Firefox和Chrome中,在IE7中并不是那么好用.我希望你们中的一个能告诉我原因.我做了一个公平但谷歌搜索但找不到我正在寻找的东西.
这是XML:
<?xml version="1.0" encoding="utf-8" ?>
<messages>
<message type="HeaderMessage">
This message is put up in the header area.
</message>
<message type="FooterMessage">
This message is put in the lower left cell.
</message>
</messages>
Run Code Online (Sandbox Code Playgroud)
这是我的jQuery调用:
<script type="text/javascript">
$(document).ready(function() {
$.get('messages.xml', function(d) {
//I have confirmed that it gets to here in IE
//and it has the xml loaded.
//alert(d); gives me a message box with the xml text in it
//alert($(d).find('message')); gives me "[object Object]"
//alert($(d).find('message')[0]); gives me "undefined"
//alert($(d).find('message').Length); gives …Run Code Online (Sandbox Code Playgroud) 我目前正在使用winforms数据绑定来连接数据编辑表单.我通过CodeSmith使用netTiers框架来生成我的数据对象.对于允许空值的数据库字段,它会创建可空类型.我发现使用winforms数据绑定控件将无法正确绑定到可空类型.
我在网上看过一些解决方案,建议人们创建可以处理可空类型的新文本框类,但是在我已经创建的表单上交换文本框可能会很麻烦.
最初我认为使用扩展方法来做这件事会很棒.基本上为textbox类创建扩展属性并绑定到该属性.从我有限的扩展方法经验和在网上做一些检查看起来你不能做扩展属性.据我所知,绑定必须通过属性,因为它需要能够获取或设置值,因此扩展方法不起作用.
我很想找到一种干净的方法来使用扩展方法来改造这些表单但是如果我必须创建新的文本框和组合框控件那就是我要做的.
由于需要在Windows 2000上运行,我的项目目前仅限于.Net 2.0.
有什么建议?
我正在使用WinForms应用程序,我有一个用户控件.用户控件中的按钮将事件提升到要由其他代码处理的表单.其中一个按钮启动一些过程,如果它们同时运行会导致问题.我在代码中有逻辑来管理状态,因此通常用户无法运行该进程(如果它已在运行).但是,如果用户双击该按钮,它将快速启动该过程两次,以至于我很难阻止它.
我想知道,处理这个问题的最佳方法是什么?
我开始时通过在单击事件中禁用按钮,但在第一次单击导致按钮被禁用之前,第二次单击进入.在代码中设置其他标志也没有捕获它.
我正在考虑在引发事件的代码上添加某种同步锁,但我想知道你是否有更好的想法.
由于这个项目大部分都是完整的,我正在寻找不涉及对应用程序进行彻底改写的答案(比如实现复合应用程序块),但是,我也可以自由发布这些想法,因为我可以在我的下一个项目中使用它们.
我有一个现有的应用程序,我错误地使用String.GetHashCode并将其持久化到磁盘.现在我正在将应用程序升级到.Net 2.0,我发现这个决定已经回来让我陷入困境.
我很想知道是否有人知道.Net 1.1兼容字符串散列算法的.Net 2.0实现.
显然,最好的解决方案是给自己买一台时间机器,然后回到2002年,即使考虑使用这种方式使用哈希码,也要自己开始.由于这似乎不太可能,我正在寻找一种解决方法.我现有的用户在他们的系统上有这些数据,所以我不可能对哈希或类似的东西进行一次大的转换.
随着更改为2.0,我将更新代码,因此它当然使用MD5或SHA.
我考虑从Mono中提取String.GetHashCode源,但由于Mono是GPL而且我的应用程序是商业用途,实际上不是一个选项.我甚至不知道Mono实现是否与MS .Net实现兼容,因为GetHashCode的合同不要求它兼容.
有任何想法吗?
我正在从VB.NET应用程序自动化Visio 2003.我的代码看起来像这样(删除了无趣的东西):
Dim objApp As New Microsoft.Office.Interop.Visio.InvisibleApp
objApp.Settings.ShowFileOpenWarnings = False
Dim objDoc As Microsoft.Office.Interop.Visio.Document
objDoc = objApp.Documents.Open(VisioFilename)
Run Code Online (Sandbox Code Playgroud)
我发现最后一行导致Visio引发一个隐藏的MessageBox说:
此文档中的宏被禁用,因为安全级别很高,并且宏未经过数字签名或验证为安全.要运行宏,您可以让它们签名或更改安全级别.
由于这将在计算机上运行,我无法控制文件,我无法控制这些选项对我来说都不适用.我真的不在乎宏被禁用,我只是使用Visio将文件从其原生格式转换为SVG.我当然不希望向用户建议他们降低安全级别,也不想为他们降低安全级别.
从上面的代码中可以看出,我关闭文件打开警告,但似乎不包括宏警告.由于我使用的是Visio.InvisibleApp,因此警告不会显示给用户.运行Visio的可见实例无济于事,因为我正在创建批处理转换器,即使消息可见,也意味着用户必须为每个文件单击"确定".这将使批量转换功能基本上无用.
我看到Visio类有一个VBAEnabled属性,但它是只读的.如果有办法我可以在打开文件时关闭VBA,它可能会解决问题.我查看了所有属性和类中的Settings属性,但找不到任何内容.我已经完成了大量的Google搜索,无法找到解决此问题的任何内容.
任何人都知道在使用Visio自动化时是否可以抑制该警告?如果我切换到Visio 2007,我可以这样做吗?
.net ×2
winforms ×2
.net-1.1 ×1
.net-2.0 ×1
button ×1
data-binding ×1
double-click ×1
gethashcode ×1
javascript ×1
jquery ×1
nullable ×1
vb.net ×1
visio ×1
xml ×1