我试图在TEXT区域控件上重现标准的即时消息行为:输入作为发送按钮.ctrl +输入为真实输入.
$("#txtChatMessage").keydown(MessageTextOnKeyEnter);
function MessageTextOnKeyEnter(e)
{
if (!e.ctrlKey && e.keyCode == 13)
{
SendMessage();
return false;
}
else if(e.keyCode == 13)
{
$(this).val($(this).val() + "\n");
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我已尝试使用注释行和不使用.不行.简单的输入按预期工作.任何想法如何在ctrl + enter上添加回车?
关键代码没问题.它们被正确检测到.所以如果按预期工作的话.但添加新行的工作不正确(在FF中,Chrome可正常工作).所以我需要正确的多浏览器方式将新行符号插入textarea.如果没有手动添加字符串(通过基于ctrl + enter的某些事件),它会更好.
更改按键事件无效."\ r \n"没有帮助.
测试页面位于此处
每个人都知道会话中有缓存.通常可以通过2种方法清除此缓存:
第二种方法不仅删除单个条目的所有缓存.
我有商业方法.它接收大对象的id(来自aspx站点)或有时是几个id.并在数据库中执行本机sql操作(使用具有复杂逻辑的sql-query来不加载C#中的所有数据).然后我需要使缓存无效.因此,对象的每个潜在负载都不会直接从数据库中缓存.
不幸的是,evict只接受对象.此外,它的实现DefaultEvictEventListener在代码路径中有明显的分离 - 对于代理而不是代理类是分开的.我试过简单地创建实体,手动填充id并将其传递给Evict.这不行.据我所知,Evict没有代理类使用GetHashCode来从缓存中查找和删除对象.所以如果我没有压倒它就行不通.我有很多本机sql批处理操作,所以覆盖所有实体对象中的所有GetHashcode将创建大量工作.此外,我不确定这种情况是从缓存中删除代理还是否. 更新:据我所知,覆盖GetHashCode也没有帮助.StatefulPersistenceContext.RemoveEntry未找到实体,因为它使用RuntimeHelpers.GetHashCode.所以这个解决方案甚至不可能
使用NHibernate的来源我已经产生了以下解决方案:
public static class NHSessionHelper: DefaultEvictEventListener
public static void RemoveEntityFromCache(this ISession session, Type type, object entityId)
{
ISessionImplementor sessionImpl = session.GetSessionImplementation();
IPersistenceContext persistenceContext = sessionImpl.PersistenceContext;
IEntityPersister persister = sessionImpl.Factory.GetEntityPersister(type.FullName);
if (persister == null)
{
return;
}
EntityKey key = new EntityKey(entityId, persister, sessionImpl.EntityMode);
persistenceContext.RemoveProxy(key);
object entity = persistenceContext.RemoveEntity(key);
if (entity != null)
{
EntityEntry e = persistenceContext.RemoveEntry(entity);
DoEvict(entity, key, e.Persister, (IEventSource)sessionImpl);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是使用NHibenate实现的一部分.但在我看来重复代码并不是一个好主意.可能有人有其他想法吗?
抱歉,这个问题可能很愚蠢,因为我是 C# 开发人员,所以我很难找到一些想法。
我们正在从 VC++ 2013 迁移到 VC++ 2019。我们有 2 个安装了 VC++2013 和 VC++2019 的类似 VM。项目已经在使用 VC++2019。在 2 个 VM 上运行时,简单评估的结果不同:
CString Value;
int precision = 8;
double number = 50.634765625;
String^ RetValue;
Value.Format(_T("%.*f"), precision, number);
RetValue = gcnew String(Value.GetString());
Run Code Online (Sandbox Code Playgroud)
在一个VM(Win 7 64位)上,我们在另一台VM(win10 64位)上有RetValue“50.63476563” - “50.63476562”我期望的所有工具都是相同的(很难说100%,因为安装了很多,但最重要的是c ++是)。
在 VS2013 下转换和运行项目时,两个 VM 上的结果相同 - “50.63476563”。
是否有任何控制格式的选项设置?或者为什么选择一个 VM 截断来支持舍入?
UPDATE 所以这个问题真的与VS2013/VS2019的差异有关。我发现了为什么我们在使用相同 VS2019 的 2 个虚拟机上有不同的结果。所以:
在这两种情况下,四舍五入方向都是最接近的。所以 MSFT 在发布/调试中以不同的方式解释最接近。C++ …
我有很多列的jqGrid表.使用过滤器工具栏在网格中搜索.对于大多数人来说,搜索只是简单的默认运算符.对于一个datetime列,我想要不同类型的运算符和datepicker选择器.我已经添加了dataInit
datepicker初始化searchoptions
,必要的运算符searchoptions.sopt
.为了显示这个运算符,我将searchOperators设置为true.所以对于这个专栏,一切都还可以.我有带操作符选择器弹出窗口的datepicker.但对于所有其他列,默认运算符图标显示在其左侧.操作员是默认的并且用户无法更改它,这很烦人.那么有可能使用jqGrid API隐藏它们吗?据我所见,我只能使用我的自定义代码隐藏它:
我需要检查我的列模型并在渲染网格(可能在loadComplete
)之后检查所有具有空的列sopt
或sopt.length == 0
删除操作符选择器.或者添加隐藏它的CSS类.不确定哪个解决方案更好(隐藏或删除),因为删除可能会破坏某些逻辑,隐藏可能会影响宽度计算.这是我在小提琴上的意思的样本
function fixSearchOperators()
{
var columns = jQuery("#grid").jqGrid ('getGridParam', 'colModel');
var gridContainer = $("#grid").parents(".ui-jqgrid");
var filterToolbar = $("tr.ui-search-toolbar", gridContainer);
filterToolbar.find("th").each(function()
{
var index = $(this).index();
if(!(columns[index].searchoptions &&
columns[index].searchoptions.sopt &&
columns[index].searchoptions.sopt.length>1))
{
$(this).find(".ui-search-oper").hide();
}
});
}
Run Code Online (Sandbox Code Playgroud)
有没有人有更好的想法?
我们在optionsCaption绑定方面遇到常见问题:即使只有一个元素也会显示它.我们使用自定义绑定解决了这个问题:
ko.bindingHandlers.optionsAutoSelect = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var allBindings = allBindingsAccessor();
if (value.length == 1) {
allBindings.optionsCaption = null;
}
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
}
};
Run Code Online (Sandbox Code Playgroud)
在更新到knockout 3.0之后,allBindings变为readonly.因此,任何更改都会被跳过.任何想法如何在ko 3.0中解决?我们确实有很多这样的自动选择,并且不想在所有视图上复制粘贴一些计算代码.所以我们想要一些单选项/扩展点.不幸的是,因为我可以看到选项绑定是相当单一的.
在 ASP.NET 中发现了非常有趣的 cookie 问题:当使用 test& 之类的值添加 cookie 时
HttpCookie cookie = new HttpCookie("test", "test&");
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
然后尝试检索值 Request.Cookies["test"] 尾随 & 符号丢失。如果它没有尾随,则不会丢失。在 firebug 或 javascript 中,数据是正确的,因此我认为它是特定于 asp.net 的。当然大多数人可能会说只使用UrlEncode。但这真的有必要吗?是否有 cookie 不允许的章程列表(因为我认为它比 URL 小)?我找到了类似的主题,但限制列表中没有 & 符号: Allowed characters in cookies
asp.net ×1
atl ×1
c++ ×1
cookies ×1
javascript ×1
jqgrid ×1
jquery ×1
knockout.js ×1
mfc ×1
nhibernate ×1
string ×1