将JavaScript函数值转发到C

将JavaScript函数值转发到C,javascript,c#,webforms,Javascript,C#,Webforms,我需要将JavaScript函数中的值传递给C 基本上,我从GridView中的列中获取值,需要通过单击按钮将它们传递给c 这是从以下两列获取值的JavaScript代码: var myCollection = []; $('#MainContent_gvKarakteristike tbody').find('tr:gt(0)').each(function () { var row = th

我需要将JavaScript函数中的值传递给C

基本上,我从GridView中的列中获取值,需要通过单击按钮将它们传递给c

这是从以下两列获取值的JavaScript代码:

 var myCollection = [];
                       $('#MainContent_gvKarakteristike tbody').find('tr:gt(0)').each(function () {
                           var row = this;
                           var myObj = {

                               label: valuefromType($(row).find($(row).find('td:eq(1)').children())),
                               opis:valuefromType($(row).find($(row).find('td:eq(2)').children()))
                           };
                           myCollection[myCollection.length] = myObj;
                       });

                       function valuefromType(control) {
                           var type = $(control).prop('nodeName').toLowerCase();
                           switch (type) {
                               case "input":
                                   return $(control).val();
                                   break;
                               case "span":
                                   return $(control).text();
                                   break;
                               case "select":
                                   return $(control).val();
                                   break;

                           }
                       }
职能:

function updateArray() {
                 alert('Snimljeno!');
                 var myCollection = [];
                     $('#MainContent_gvKarakteristike tbody').find('tr:gt(0)').each(function () {
                         var row = this;
                         var myObj = {

                             label: valuefromType($(row).find($(row).find('td:eq(1)').children())),
                             opis: valuefromType($(row).find($(row).find('td:eq(2)').children()))
                         };
                         myCollection[myCollection.length] = myObj;
                     });
                     $("MainContent_gvKarakteristike_ddlOpis_0").remove();
                 }
C按钮:

  <asp:Button ID="btnButton" runat="server" Text="Save" autopostback="true" OnClientClick="return updateArray()" OnClick="btnButton_Click"  />
我需要帮助,将javascript中的值与获取的值一起传递给C,以便稍后将它们存储到数据库中

protected void btnButton_Click(object sender, EventArgs e)

{

}

在WebMethod属性的帮助下,可以使用ajax调用将值传递给后端代码

因此,您的后端代码如下所示

[WebMethod]
public static string StoreGridData(object[] obj)
{
   if (obj.Length == 0) return string.Empty;

   //save values to database

   return "Success";
}
您的fontend代码将是

function updateArray() {
 //do your normal check to get the data for your collection
$.ajax({
    type: "POST",
    url: "Yourpage.aspx/StoreGridData",
    data: {obj: myCollection },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) {
        alert(response.d);
    },
    failure: function(response) {
        alert(response.d);
    }
 });
}
不要忘记在CS文件中添加Using System.Web.Services引用。最后,将按钮代码更改为

<button id="someButton" onclick="updateArray()" type="button">Save</button>

您不应该在单击时将autopostback和服务器端onclick与javascript混合使用。我明白了。你能在代码方面帮我一点忙吗。我有个问题。Array myCollection仅在重新加载页面时更新。如果它在点击按钮时更新,我会很高兴。谢谢你的回答!当我将代码更改为您的按钮时出现问题。阵列更新无法工作。数组获取列中的所有值,仅在页面重新加载时更新。你能帮忙吗@freej17是否在Page_Load事件中用数据填充网格?是,所有内容都在:受保护的无效Page_Loadobject sender,EventArgs e{}
<button id="someButton" onclick="updateArray()" type="button">Save</button>