【问题标题】:Calling function error: explicit instance of the class调用函数错误:类的显式实例
【发布时间】:2013-12-20 09:09:28
【问题描述】:

我正在尝试使用 webmethod、jeditable 和 SqlDataSource 工具将数据保存到数据库。但是函数调用出现一些错误。我试图在谷歌上找到但无法删除或理解错误link1、link2。在代码视图中,它指向 SqlDataSource1 作为错误。

这是错误:如果没有类的显式实例,则无法从共享方法或共享成员初始化程序中引用类的实例成员。

default.aspx.vb 页面代码

< WebMethod()> _
Public Shared Function HelloWorld(var2 As String, var3 As String)
    Dim tempData As String = 0

    If var2 = "edit_main_contents" Then
        tempData = var3
        dbValue(var2, var3)
    ElseIf var2 = "edit_second_contents" Then
        tempData = var3

    Else
        Return 0

    End If
    Return tempData
End Function

Public Shared Function dbValue(data_ID As String, data_value As String)

    SqlDataSource1.InsertParameters("datatext").DefaultValue = data_value
    SqlDataSource1.InsertParameters("myID").DefaultValue = data_ID
    SqlDataSource1.Insert()
    Return "job done"

End Function

default.aspx 页面代码

$(document).ready(function () {
        $('.editable_textile').editable(function (value, settings) {
            var returnValue;
            var textboxID = $(this).attr('id');
            var returnValue = oGod(textboxID, value);
            return (returnValue);
        }
        , {
            width: '350',
            submit: 'Save Changes',
            cancel: 'Cancel',
            onBlur: 'ignore'
        });
    });
    function oGod(textboxID, NewValue) {
        var resultData;

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "default.aspx/HelloWorld",
            data: '{ "var2" : "' + textboxID + '", "var3" : "' + NewValue + '"}',
            dataType: "json",
            async: false,
            success: function (msj) {
                resultData = msj.d;                    
                return resultData;
            },
            error: function (e) {
                resultData = "error";
                return resultData;
            }             

        });
        return resultData;
    }


</script>

【问题讨论】:

    标签: asp.net sql ajax jquery


    【解决方案1】:

    您不能在不创建 shared method 的实例的情况下调用 none-shared method。

    因此您需要将Shared 关键字分配给您的dbValue(),但您将无法在Shared 方法中调用页面控件(在本例中为SqlDataSource)!

    如果你想返回一个 DataTable 并说填充一个控件,你可以返回一个对象列表并在 ajax 调用成功时绑定。

    在您的情况下,我看到您只是在执行插入操作,因此您可以从 dbValue() 函数运行存储过程或内联 sql。

    一个例子:

    string stmt = "INSERT INTO Your Table";//you can paste the SqlDataSource query here
    
    SqlCommand cmd = new SqlCommand(smt, _connection);
    //your parameters
    cmd.Parameters.Add("@datatext", SqlDbType.Int).Value = data_value; 
    cmd.Parameters.Add("@myID", SqlDbType.VarChar, 100).Value = data_ID;
    cmd.ExecuteNonQuery();
    

    【讨论】:

    • 如果我输入“公共共享函数 dbValue”,那么它会显示 SqlDataSource1 的错误。如果我只输入“函数 dbValue”,那么它不会在 SqlDataSource1 上显示错误,但会在 dbValue(var2, var3) 上显示错误
    • 感谢您的建议。我不是编写存储过程或内联 sql 之类的程序员的人。如果您向我推荐一些链接来做到这一点,我们将不胜感激,我也在谷歌搜索。
    • @JasbirBhinder 查看示例(我还没有测试过,所以它可能有语法错误)...
    猜你喜欢
    • 2017-01-28
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多