2013-12-20 14 views
0

我正嘗試使用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

你不能叫一個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(); 
+0

如果我把「公共共享功能dbValue」,那麼它顯示了SqlDataSource1的錯誤。如果我只把「函數dbValue」,那麼它不顯示錯誤SqlDataSource1,但它顯示錯誤dbValue(var2,var3) –

+0

@JasbirBhinder看到我的編輯 – Zaki

+0

謝謝你的建議。我不是一個像存儲過程或內聯sql那樣編程的人。如果你向我推薦一些鏈接來做到這一點,我將非常感激,我也是一樣使用Google。 –