我正在尝试使用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>
答案 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();