从后面的代码添加动态按钮到首页,这将调用后面的代码

时间:2014-03-07 19:12:31

标签: vb.net .net-4.0 linkbutton

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

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

最后一行也有错误。

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

我需要此按钮才能点击,当用户点击它时,会调用function / sub后面的代码。

1 个答案:

答案 0 :(得分:0)

你能展示你的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添加到您的页面(放在<head></head>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>

添加一个按钮单击调用的函数,以对webmethod进行ajax调用

<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更新面板的方法,并且可以轻松处理动态元素中的事件而无需提交页面。