【问题标题】:Add dynamic button to front page from code behind that will call code behind将动态按钮从后面的代码添加到首页,这将调用后面的代码
【发布时间】:2014-03-07 19:12:30
【问题描述】:

我试图弄清楚如何在首页后面的代码中添加动态生成的按钮。代码后面的代码生成按钮如下:

Dim sortLinkButton As New LinkButton()
sortLinkButton.Text = "Click To Sort"
sortLinkButton.OnClientClick = New EventHandler(AddressOf sortLinkButton_Click); <- !!!

最后一行也有错误。

然后我有一个 div 或 span 或任何我可以使用 Me.myDIV.innerHTML 引用的东西

我需要这个按钮可以点击,当用户点击它时调用函数/子代码后面的代码。

【问题讨论】:

    标签: vb.net .net-4.0 linkbutton


    【解决方案1】:

    你能展示你的 HTML 并指出你想要做什么吗?如果我认为我理解您要做什么,以下是我会做的事情。

    您可以将sortLinkButton.OnClientClick 设置为指向将调用 Web 方法的 jQuery ajax 函数,但在客户端单击函数中处理会更容易,例如

    $('#LinkbuttonClientId').click(function(){ });

    在后端代码中包含以下导入

    Imports System.Web.Script.Serialization
    Imports System.Web.Services
    

    在后端代码中添加一个函数

       <WebMethod()> _
        Public Shared Function WebMethod(value As string) As String
            Try
                Dim ReturnString As New List(Of [String])()
                'Add functionality - if success set first element of ReturnString = 1 else set to 0
                ReturnString.Add("1")
                'Add any other value to return
                ReturnString.Add("another value")
                Dim serializer As New JavaScriptSerializer()
                Return serializer.Serialize(ReturnString)
            Catch ex As Exception
                'Create the same ReturnString variable to return information about an error 
                Dim ReturnString As New List(Of [String])()
                ReturnString.Add("-1")
                ReturnString.Add(ex.Message.ToString + ", " + ex.InnerException.ToString)
                Dim serializer As New JavaScriptSerializer()
                Return serializer.Serialize(ReturnString)
            End Try
        End Function
    

    将 jQuery 添加到您的页面(放在 &lt;head&gt;&lt;/head&gt;)

    &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;

    添加一个函数来调用按钮单击以使ajax调用webmethod

    <script type="text/javascript">
    var WebMethodCall = function(value) {
        $.ajax({
            type: "POST",
            url: "[page name].aspx/WebMethod",
            data: "{'value' : '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (obj) {
                try {
                    var ret = $.parseJSON(obj.d);
                    if (ret[0] > -1) {
                        //run this code after successful return code 
                    }
                    else {
                        console.log(ret[1])
                    }
                }
                catch (e) {
                    console.log(e.description || e);
                }
            },
            error: function (ts, ajaxOptions, thrownError) {
               console.log(ts.responseText)
            }
        });
    };
    </script>
    

    添加一个 jQuery 处理程序(也在前端)

    <script type="text/javascript">
    $(document).ready(function() {
        $("#LinkbuttonClientId").click(function(){
            WebMethodCall(value);
            //prevent click from submitting page
            return false;
        });
    });
    </script>
    

    您可以将两个 js 部分放在一个单独的文件中并包含以进行整理。 'value' 也不是必需的,但它可以向您展示如何将变量传递给 webmethod。可以在 jQuery 中动态创建按钮,如果这样做,则在同一段代码中声明处理函数并使用 bind() 或 on() 例如

    $("#LinkbuttonClientId").on("click", function(){  });`
    

    所有这一切对你来说可能是多余的,但这是我对函数进行 ajax 调用而不是使用 .net 更新面板的方式,并且可以轻松处理来自动态元素的事件,而无需提交页面。

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 2016-02-04
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多