调用函数错误:类的显式实例

时间:2013-12-20 09:09:28

标签: asp.net sql ajax jquery

我正在尝试使用webmethod,jeditable和SqlDataSource工具将数据保存到数据库。但是函数调用会出现一些错误。我试图在谷歌上找到但无法删除或理解错误link1link2。在代码视图中,它指向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>

1 个答案:

答案 0 :(得分:0)

如果没有创建实例,就无法在none-shared method中调用shared method

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

如果你想返回一个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();