Asp.net 调用函数错误:类的显式实例
我正在尝试使用webmethod、jeditable和SqlDataSource工具将数据保存到数据库中。但是函数调用中出现了一些错误。我试图在谷歌上查找,但无法删除或理解错误。在代码视图中,它指向SqlDataSource1作为错误 这是错误:如果没有类的显式实例,则无法从共享方法或共享成员初始值设定项中引用类的实例成员 default.aspx.vb页面代码Asp.net 调用函数错误:类的显式实例,asp.net,sql,ajax,jquery,Asp.net,Sql,Ajax,Jquery,我正在尝试使用webmethod、jeditable和SqlDataSource工具将数据保存到数据库中。但是函数调用中出现了一些错误。我试图在谷歌上查找,但无法删除或理解错误。在代码视图中,它指向SqlDataSource1作为错误 这是错误:如果没有类的显式实例,则无法从共享方法或共享成员初始值设定项中引用类的实例成员 default.aspx.vb页面代码 < WebMethod()> _ Public Shared Function HelloWorld(var2 As St
< 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
$(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>
_
公共共享函数HelloWorld(var2作为字符串,var3作为字符串)
Dim tempData作为字符串=0
如果var2=“编辑主内容”,则
tempData=var3
dbValue(var2,var3)
ElseIf var2=“编辑第二个内容”然后
tempData=var3
其他的
返回0
如果结束
返回临时数据
端函数
公共共享函数dbValue(数据\u ID为字符串,数据\u值为字符串)
SqlDataSource1.InsertParameters(“datatext”).DefaultValue=数据值
SqlDataSource1.InsertParameters(“myID”).DefaultValue=data\u ID
SqlDataSource1.Insert()
返回“工作完成”
端函数
default.aspx页面代码
< 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
$(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>
$(文档).ready(函数(){
$('.editable_textile')。可编辑(函数(值、设置){
风险价值;
var textboxID=$(this.attr('id');
var returnValue=oGod(textboxID,value);
返回值(returnValue);
}
, {
宽度:'350',
提交:“保存更改”,
取消:“取消”,
onBlur:“忽略”
});
});
函数oGod(textboxID,NewValue){
var结果数据;
$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“default.aspx/HelloWorld”,
数据:“{”var2:“'+textboxID+'”,“var3:“'+NewValue+'”}”,
数据类型:“json”,
async:false,
成功:功能(msj){
结果数据=msj.d;
返回结果数据;
},
错误:函数(e){
resultData=“error”;
返回结果数据;
}
});
返回结果数据;
}
在共享方法
中调用无共享方法
,必须创建该方法的实例
因此,您需要将Shared
关键字分配给dbValue()
,但您将无法在Shared
方法中调用页面控件(在本例中为SqlDataSource
)
如果您想返回一个DataTable并说填充一个控件,那么可以在ajax调用成功时返回一个对象和绑定列表
在您的例子中,我看到您只执行了一个insert,因此您可以从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的错误。如果我只放了“function dbValue”,那么它不会在SqlDataSource1上显示错误,而是在dbValue上显示错误(var2,var3)。谢谢您的建议。我不是一个像存储过程或内联sql那样编写代码的程序员。如果您能给我提供一些链接,我们将不胜感激。我也在谷歌上搜索。@JasbirBhinder查看示例(我没有测试过,所以可能有语法错误)。。。