First of all, I highly recommend using the first method Kulrom suggested. It is a little more long-winded but it is less prone to error and it is more secure. I'd suggest getting into good habits early on.
Secondly, I've never tried it but I believe you can assign the result of a function as long as the return type implements one of those interfaces. If you had function that returned a DataTable, then it would be able to be assigned to the DataSource of the DataGrid. The function would have to execute a SELECT query though. You are inserting data into the database, not retrieving it from the database.
If you don't want your method to return a value, you can either declare it as a function but not specify a return type, or you can declare it as a procedure (Sub), which cannot have a return type.
If you are using a DataGrid, chances are you want to call Fill on an SqlDataAdapter to fill a DataTable or DataSet. You would assign the DataTable or DataSet to the DataSource property of the DataGrid, either before or after it is filled. You would then call Update on the SqlDataAdapter to commit any changes back to the database. You would have to create the necessary SqlCommand objects to perform any delete, insert or update operations required.
Edit:
Just a point to note: you cannot assign the result of a function to a variable if that function has no return type. A function without a return type is exactly the same as a procedure and is called in the same fashion.