小编Nir*_*Nir的帖子

ASP.Net:将客户端onClick添加到GridView中的HyperlinkField

我有一个现有的GridView,其中包含"伙伴名称"字段.它可以按合作伙伴名称排序.
现在我需要更改合作伙伴名称字段,并在某些情况下使其可点击并提醒()某些内容.

现有代码是:

  <asp:GridView ID="gridViewAdjustments" runat="server" AutoGenerateColumns="false" AllowSorting="True" OnSorting="gridView_Sorting" OnRowDataBound="OnRowDataBoundAdjustments" EnableViewState="true">
         <asp:BoundField DataField="PartnerName" HeaderText="Name" SortExpression="PartnerName"/>
Run Code Online (Sandbox Code Playgroud)

我添加了专栏:

<asp:hyperlinkfield  datatextfield="PartnerName" SortExpression="PartnerName" headertext="Name" ItemStyle-CssClass="text2"/>
Run Code Online (Sandbox Code Playgroud)

这使我能够控制CSS和排序.但是,我找不到如何添加客户端javascript函数.
我发现添加:

    <asp:TemplateField HeaderText="Edit">                                     
<ItemTemplate>
      <a id="lnk" runat="server">Edit</a>      
Run Code Online (Sandbox Code Playgroud)

使我能够通过id访问"lnk"并添加到其属性.但是,我失去了排序能力.

在这种情况下,正确的解决方案是什么?
谢谢.

asp.net gridview c#-3.0

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

Getter属性在没有人调用的情况下运行

我在.net 3.5工作.我有一个类"A",它有一个堆栈和一个getter属性,当被调用时,它会删除堆栈中的第一个项目并检索下一个项目.

在初始化类之后,我看到getter在没有被调用的情况下工作,并删除了堆栈中的顶层项,从而给我带来了不好的结果.吸气剂中的断点并未显示任何人通过它.

当我将属性更改为函数时,堆栈返回ok.

如果有人可以解释为什么会这样,我会很高兴.

这是简化的类:

 public class A
    {
        private Stack<string> Urls;

        public A(string title, string[] array)
        {
            Urls = new Stack<string>();
            foreach (string s in array)
            {
                Urls.Push(s);
            }
        }

        public string Url
        {
            get { return Urls.Peek(); }
        }
        public string NextUrl
        {
            get{
            if (Urls.Count > 1)
                { Urls.Pop(); } 
            return Urls.Peek(); 
            };
        }            
    }
Run Code Online (Sandbox Code Playgroud)

c# getter

3
推荐指数
1
解决办法
422
查看次数

尽管Javascript函数的类为null,但它仍然被调用

如果你可以向我解释为什么shout()不断被调用,我会很高兴,尽管它应该"消失".

var myclass = new Class({
myid: "greatidea",
initialize: function(element) {
    var shout = function() { alert(this.myid); };
    shout.periodical(5000, this); // test debug
}
Run Code Online (Sandbox Code Playgroud)

});
x = new myclass ();
alert(x);
x=null;
alert(x);

另见http://mootools.net/shell/jhCBz/

基本上,我明白了这个想法:函数有自己的注册,现在独立于调用它的对象.但我很乐意得到一个真正的解释.
谢谢.

javascript mootools

3
推荐指数
1
解决办法
222
查看次数

C# - 使用Session存储变量的副本而不是引用

我有一个asp:ImageButton,OnClick ="Btn_OnClick".
在Btn_OnClick我有这一行:

DataTable dtTable = (DataTable)Session["someSessionKey"]
Run Code Online (Sandbox Code Playgroud)

和dtTable在功能中被改变.

我注意到如果按钮被多次点击,我从会话中获取的dtTable包含更改的表,可能意味着dtTable不是副本而是会话变量的引用.

如何更改Session ["someSessionKey"]的副本,而不是实际值?
谢谢!

c#

3
推荐指数
1
解决办法
2506
查看次数

.net Dictionary.Resize()异常 - 线程安全?


我们有一个非常严重的问题,每分钟造成数千个异常.我们有一个运行本土缓存机制的网站,该机制以下列形式保存数据:

protected static IDictionary<int, IList<IInterfaceForData>> m_Data = null;
Run Code Online (Sandbox Code Playgroud)

当我们在这个字典上调用Add时,我们得到一个非常奇怪的行为:" 索引超出了数组的范围 ",当密钥100%不在字典中时:

m_Data.Add(id, new List<IInterfaceForData>());
Run Code Online (Sandbox Code Playgroud)

我们使用这样的锁来保护这个电话:

if(Monitor.TryEnter(m_LockObj, 1000))
{
   try
   {
       m_Data.Add(id, new List<IInterfaceForData>());
   }
   catch(Exception ex)
   {                                   
        // log exception
   }
   finally
   {
      Monitor.Exit(m_LockObj);
   }
}
Run Code Online (Sandbox Code Playgroud)

我们得到这个例外:

   at System.Collections.Generic.Dictionary`2.Resize()     at   System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)       at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)     
Run Code Online (Sandbox Code Playgroud)

我们找不到任何解释,因为异常与Dictionary的线程安全有关,我们(认为我们)是线程安全的.我们在每个Add()和Remove()调用上使用lock()或Monitor.TryEnter,m_Data.TryGetValue(...)除外

任何帮助将不胜感激.

非常感谢.

.net dictionary thread-safety c#-3.0

3
推荐指数
1
解决办法
2455
查看次数

C#Gridview - 在添加新列时检查列是否已存在失败

我有一个包含10列的GridView.在某种情况下,我想添加一个名为"过期日期"的新列.问题是当用户再次按下"搜索"(回发)时,将再次添加该列.
我在添加列之前检查,看它是否已经存在:

BoundField dtExp = new BoundField
                            {DataField = "DateTimeExpired", HeaderText = "Expiration Date", DataFormatString = "{0:d}"};
if (!grid.Columns.Contains(dtExp)){grid.Columns.Add(dtExp);}
Run Code Online (Sandbox Code Playgroud)

但问题是即使列已经存在,"Contains"也会返回false.
我究竟做错了什么?

谢谢!

c# ado.net gridview

2
推荐指数
1
解决办法
8920
查看次数

间歇性"无法连接到远程服务器"错误

我正在运行一个使用以下代码下载RSS提要的Windows服务:

XmlReaderSettings settings = new XmlReaderSettings() { DtdProcessing = DtdProcessing.Ignore };

string feedXml = XDocument.Load(XmlReader.Create(url, settings));
Run Code Online (Sandbox Code Playgroud)

该服务不在IIS下运行,而是作为独立服务运行.

突然之间(我怀疑是基础设施问题)我们开始每10-20分钟接收一次"无法连接到远程服务器".代码本身没有改变,我正在寻找可能的原因.

为了解决这个问题,我将服务移动到另一台机器,但问题仍然存在.

很想得到任何想法.谢谢!

.net c# windows-services connectivity

2
推荐指数
1
解决办法
921
查看次数

用手动代码替换SqlDependency

我们在.Net 3.5中工作,我们在代码中有SqlDependency,这要求.Net用户具有CREATE权限和其他权限.
这里的DBA希望避免给.Net用户提供如此巨大的权限.

有没有办法通过手动执行SqlDependency的操作来绕过SqlDependency?运行具有.net之一的更多权限的后台进程并创建必要的程序等?

谢谢!


为了将来参考,我只想说我们通过一个非常简单的解决方案解决了权限问题:SqlDependency使用不同的连接字符串,其用户具有与常规.net连接字符串不同的权限.

c# sql-server .net-3.5

0
推荐指数
1
解决办法
1060
查看次数

C#大写字符串,但仅在某些标点符号之后

我正在尝试寻找一种有效的方法来获取输入字符串,并在每个标点符号(. : ? !)后的空白处加上大写字母。

输入:

“我吃了点东西。但是我没有:相反,不。你怎么看?我不认为!对不起。我。”

输出:

“我吃了点东西。但是我没有:相反,不。你怎么想?我不认为!打扰我了。moi”

显而易见的是将其拆分,然后大写每个组的第一个字符,然后将所有内容连接在一起。但这是丑陋的。最好的方法是什么?(我正在考虑Regex.Replace使用MatchEvaluator首字母大写但希望获得更多想法的a)

谢谢!

.net c# regex capitalization

0
推荐指数
1
解决办法
3822
查看次数