2015-11-06 29 views
0

我試圖通過使用的.asmx頁面,Ajax調用Javascript中的Web服務調用做Telerik的控制的所有服務器交互的Web服務調用後的錯誤。回發到服務器全中,頁

JavaScript的下拉OnChange事件,它完全通過獲取JSON數據並沒有問題結合好。

腳本:

<script type="text/javascript"> 
     function getproduct_details(e) { 
      var product = $("#<%=cbo_productname.ClientID%>").val(); 
      var final_product = product.replace(/\s/g, '&&'); 
      //var cborejectrating = $find("<%= cbo_productname.ClientID%>"); 
      //var product = cborejectrating.get_value(); 
      var obj = { 
       product_name: final_product 
      }; 

      if (product == "") { 
       $('#<%=hdnproduct_gid.ClientID%>').val(""); 
       $('#<%=cboproductgroup.ClientID%>').val(""); 
       $('#<%=txt_ProductCode.ClientID%>').val(""); 
       $("[id*=cbo_productname]").val(""); 
       $('#<%=hdnProductUOM.ClientID%>').val(""); 
       $("[id*=txt_displayfield]").val(""); 
      } 
      else { 
       $.ajax({ 

        type: "POST", 
        url: "../ems_service/crm_service.asmx/product_details", 
        //data: '{product_name:"' + "'" + final_product + "'" + '"}', 
        data: JSON.stringify(obj), 


        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (data) { 
         var obj = JSON.parse(data.d) 

         $('#<%=hdnproduct_gid.ClientID%>').val(obj[0].product_gid); 
         $('#<%=cboproductgroup.ClientID%>').val(obj[0].productgroup_gid); 
         $('#<%=txt_ProductCode.ClientID%>').val(obj[0].product_code); 
         $("[id*=txt_displayfield]").val(product); 
         $("[id*=cboUOM]").val(obj[0].productuom_name); 
         $('#<%=hdnProductUOM.ClientID%>').val(obj[0].productuom_gid); 
         jQuery.removeData(); 

        }, 
        failure: function() { 
         alert("Server Failure"); 
        }, 
        error: function() { 
         alert("Server Error"); 
        } 

       }); 


      } 
     } 
    </script> 

ASMX頁:

<WebMethod(Enablesession:=True), ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _ 
    Public Function product_details(ByVal product_name As String) 
     objdbconn.OpenConn() 
     Dim product_value As String = Replace(Replace(product_name, "'", ""), " ", "") 
     msSQL = "Select distinct a.product_gid,a.product_code,a.productgroup_gid,d.productgroup_name,c.productuom_gid,c.productuom_name " & _ 
        " from pmr_mst_tproduct a" & _ 
        " left join pmr_mst_tproductuomclass b on a.productuomclass_gid = b.productuomclass_gid" & _ 
        " left join pmr_mst_tproductuom c on a.productuomclass_gid= c.productuomclass_gid" & _ 
        " left join pmr_mst_tproductgroup d on a.productgroup_gid=d.productgroup_gid" & _ 
        " where a.product_name = '" & Replace(product_name, "&&", " ") & "' " 
     ds_table = objdbconn.GetDatatable(msSQL) 
     result = objcmn.DataTable2JSON(ds_table) 
     'data = "{'product_gid':'" + odjreader.Item("product_gid").ToString + "','product_code':'" + odjreader.Item("product_code").ToString + "','productgroup_gid':'" + odjreader.Item("productgroup_gid").ToString + "','productgroup_name':'" + odjreader.Item("productgroup_name").ToString + "','productuom_gid':'" + odjreader.Item("productuom_gid").ToString + "','productuom_name':'" + odjreader.Item("productuom_name").ToString + "'}" 
     objdbconn.CloseConn() 
     Return result 
    End Function 

ASPX頁面:

<telerik:RadComboBox ID="cbo_productname" runat="server" AllowCustomText="true" DataTextField="product_name" 
               EnableItemCaching="true" ShowMoreResultsBox="true" EnableVirtualScrolling="true" OnChange="javascript:getproduct_details(this);" 
               MarkFirstMatch="true" Filter="StartsWith" DataValueField="product_gid" EmptyMessage="Select Product" 
               EnableLoadOnDemand="true" Width="85%" ItemsPerRequest="20" DataSourceID="ds_cboproduct" 
               EnableAutomaticLoadOnDemand="true" AutoPostBack="false" ZIndex="10000000" Skin="WebBlue"> 
    </telerik:RadComboBox> 

呈現的HTML:

<input id="ctl00_Content_cbo_productname_Input" class="rcbInput rcbEmptyMessage" type="text" value="Select Product" name="ctl00$Content$cbo_productname" autocomplete="off"> 

onchange事件觸發後,頁面的所有服務器端回發引發如下錯誤:

enter image description here

回答

1

使用radcombobox控件客戶端API(SET_VALUE()和get_value())而不是jQuery val()方法。瞭解更多關於他們在這裏:

這同樣適用於其他任何Telerik的UI爲ASP.NET AJAX控件。可能你有一個RadTextBox或其他東西(堆棧跟蹤通過父RadInput類),所以你也應該使用自己的API而不是jQuery。從你的代碼中,我猜cboproductgroup是一個RadComboBox,txt_ProductCode是一個RadTextBox,也許是txt_displayfield和cboUOM。

相關問題