在Ajax调用之后使用knockoutJS绑定到ASP网格模板字段

时间:2012-11-12 22:05:28

标签: javascript asp.net jquery knockout-mapping-plugin

我正在开发一个项目,我通过ajax成功地进行了web服务调用,返回了数据,并将单行结果绑定到文本框。但是,在某些情况下,诸如account等字段可能具有多个值,并在我的情况下编入索引。我能够硬编码返回的结果并绑定它,但我需要动态地做它而不是硬编码,因为Web服务调用可能会返回不同数量的行,具体取决于给它的数据。以下是一些代码:

 function RetrieveEntity() {
 var pageUrl1 = "ajaxwebservicecalls.asmx/RetrieveEntity";
    $.ajax({
        type: "POST",
        url: pageUrl1,
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        success: OnretrieveSuccessCall,
        error: onretrieveFail
    });


}
function OnretrieveSuccessCall(msg) {
    var defaultdata = msg.d.Data;
    invoiceModel = defaultdata;
    var x = JSON.stringify(defaultdata);
    MyProject.viewModel = ko.mapping.fromJS(invoiceModel);
    ko.applyBindings(MyProject.viewModel)
alert("hello");
}

(无需显示web服务asmx文件,因为该部分工作正常) 返回的结果与此类似:

  header1.value = "abc"
  header2.value = "efg"

所以当我将它绑定到文本框时,我所要做的就是调用data-bind =“value:header1.value”并且工作正常

但是,在索引格式中返回多行结果,如下所示:

Header1[(value1=xxx,value2=yyyy,value3=zzz),(value1=ddd,value2=fff,value3=fgghg)] 

所以当我对它进行数据绑定(硬编码值)时,我使用了

data-bind="value:header1()[0].value1" 

并返回“xxx”

我的问题是,如果我想返回value1(xxx,ddd)的所有答案并将它们绑定在网格上。我使用了模板字段网格,并在其中放置了一个文本框,并尝试使用它工作的硬编码索引来检索该值。但是当我想要返回所有可能的值时(使用#index或$ data0它不起作用。我不知道如何使用它,如果甚至可以使用knokcoutjs绑定一个gridview。请帮帮我。下面是HTMl代码(我将仅显示一个gridview字段,我正在使用正在运行的硬编码索引。)

 <asp:GridView ID="GridView2" runat="server"AllowPaging="True"AutoGenerateColumns="False">    
 <Columns>
 <asp:TemplateField HeaderText="Account" SortExpression="Account" >
  <ItemTemplate>
    <asp:TextBox ID="Account" runat="server" MaxLength="60" ReadOnly="true" 
     TabIndex="-1" Style="width: 250px" data-bind="value:APInvoiceItems()[0].Accountnumber"/>
                </ItemTemplate>
         </asp:TemplateField>
  </Columns>
    </asp:GridView>
<button onclick=" RetrieveEntity()"> Update </button>

从上面的代码返回索引为零的帐号。如何返回索引1,2等等? 非常感谢所有帮助。提前谢谢!!

1 个答案:

答案 0 :(得分:0)

那是不可能的。 GridVew是一个服务器控件,因此您只能在服务器上将数据绑定到它。考虑使用一些JavaScript模板引擎,如jsRender,doT,Underscore等,从服务响应中创建布局。