【问题标题】:calling a javascript function in C#在 C# 中调用 javascript 函数
【发布时间】:2011-07-10 11:25:45
【问题描述】:

您好,我想根据查询显示或隐藏重复记录。所以,我需要知道如何从 C# 代码隐藏中调用 javascript 函数。

  <a onclick="Grid1.insertRecord(); return false;" id="a2"  href="javascript:">Save</a>

当我点击保存时,我需要显示一个我用 javascript 编写的弹出窗口。

 if (!exist)//exists is the query
        {
            System.Web.UI.Control my = FindControl("a2");
              a2.Attributes.Add("onclick", "retrun HideDuplicate()");

这行返回一个错误提示“a2 在当前上下文中不存在。”

【问题讨论】:

标签: c# .net asp.net


【解决方案1】:

为什么不使用 asp.net LinkButton?它有一个服务器端 Click 事件,可从 c# 代码隐藏访问。

【讨论】:

  • 我认为您的意思是 OnClientClick 事件会呈现为 javascript onclick 事件? msdn.microsoft.com/en-us/library/…
  • 如果你必须调用类似Grid1.insertRecord() 的东西,他应该使用 OnClick 服务器端事件处理程序吗?
  • 但问题是我需要在调用 jascript 之前检查查询
  • 是的,我定义了一个插入记录函数.....现在我需要检查一个查询,然后相应地调用 javascript
  • @Nishanth 看看msdn.microsoft.com/en-us/library/… 那里有很多例子。
【解决方案2】:

基本的&lt;a&gt; 标记不会被asp.net 转换为控件,除非您向其添加runat="server"。然后它变成了HtmlGenericControl

<a onclick="Grid1.insertRecord(); return false;" id="a2" href="#" runat="server">Save</a>

这可能对您有用 - 不清楚您在页面上是否有多个这些链接(例如在 gridview 的一行中?)或者它是否只存在一次。

你使用 javascript 的方式也没有遵循最佳实践,但那是另一天的讨论:)

【讨论】:

  • 我有一个连续的。但是,runat 并没有解决问题
  • 不,这不会连续解决您的问题。您需要处理GridView控件的RowCreated事件,然后使用e.Row.FindControl()
【解决方案3】:

带有example where the code behind is in C#programatic creation of client side callbacks without postback 的MSDN 文档可能会很好地概述它应该如何工作。

在您的情况下,相应的代码隐藏应该实现接口“ICallbackEventHandler”和它描述的两个方法。此外,除了执行程序/调用程序(在您的情况下是“保存”方法)之外,您还需要另外两个客户端 Javascript 函数来准备和处理回调。但是,可以在代码隐藏中注册另外两个 Javascript 函数之一,如示例所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2018-01-11
    • 2017-03-20
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多