小编Yau*_*n.F的帖子

jquery ctrl +在文本区域输入as

我试图在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"没有帮助.

测试页面位于此处

javascript jquery

12
推荐指数
2
解决办法
2万
查看次数

NHibernate通过id逐出

每个人都知道会话中有缓存.通常可以通过2种方法清除此缓存:

  1. Session.Evict
  2. Session.Clear

第二种方法不仅删除单个条目的所有缓存.

我有商业方法.它接收大对象的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实现的一部分.但在我看来重复代码并不是一个好主意.可能有人有其他想法吗?

nhibernate

6
推荐指数
1
解决办法
5022
查看次数

CString.Format 以相同的精度产生不同的值

抱歉,这个问题可能很愚蠢,因为我是 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 个虚拟机上有不同的结果。所以:

  1. VS2013 四舍五入 50.634765625 == VS 2019 版本四舍五入
  2. VS2013 四舍五入 50.634765625 != VS 2019 调试四舍五入

在这两种情况下,四舍五入方向都是最接近的。所以 MSFT 在发布/调试中以不同的方式解释最接近。C++ …

c++ string floating-point mfc atl

6
推荐指数
1
解决办法
248
查看次数

jqGrid过滤器工具栏显示单个列的搜索运算符选择器

我有很多列的jqGrid表.使用过滤器工具栏在网格中搜索.对于大多数人来说,搜索只是简单的默认运算符.对于一个datetime列,我想要不同类型的运算符和datepicker选择器.我已经添加了dataInitdatepicker初始化searchoptions,必要的运算符searchoptions.sopt.为了显示这个运算符,我将searchOperators设置为true.所以对于这个专栏,一切都还可以.我有带操作符选择器弹出窗口的datepicker.但对于所有其他列,默认运算符图标显示在其左侧.操作员是默认的并且用户无法更改它,这很烦人.那么有可能使用jqGrid API隐藏它们吗?据我所见,我只能使用我的自定义代码隐藏它:

我需要检查我的列模型并在渲染网格(可能在loadComplete)之后检查所有具有空的列soptsopt.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)

有没有人有更好的想法?

jqgrid jqgrid-asp.net

5
推荐指数
1
解决办法
1万
查看次数

淘汰赛:如何从自定义绑定更新另一个绑定?

我们在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中解决?我们确实有很多这样的自动选择,并且不想在所有视图上复制粘贴一些计算代码.所以我们想要一些单选项/扩展点.不幸的是,因为我可以看到选项绑定是相当单一的.

knockout.js ko-custom-binding

5
推荐指数
1
解决办法
3155
查看次数

asp.net 和 cookies 特殊字符

在 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 cookies

4
推荐指数
1
解决办法
4037
查看次数