如何在RadGrid中通过js为列分配一个值

时间:2011-11-07 12:31:40

标签: javascript asp.net telerik

我有Radgrid,所有行始终处于编辑模式。我希望在其中一列中具有以下功能:在编辑项目后,此列中的所有行都将使用此值。这是我的专栏的样子。

  <telerik:GridTemplateColumn HeaderText="Opis" HeaderStyle-Width="125px" ItemStyle-Width="120px"
                            UniqueName="poz_nazwa">
                            <ItemTemplate>
                                <%#DataBinder.Eval(Container.DataItem, "poz_nazwa")%>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <telerik:RadTextBox runat="server" ID="Rtopis" DataTextField="poz_nazwa" DataValueField="poz_nazwa"
                                    Width="120px" Text='<%#Bind("poz_nazwa") %>' onfocus="javascript:podp(this.id);"
                                    AutoCompleteType="Disabled" onpropertychange="Opisblur()">
                                </telerik:RadTextBox>
                            </EditItemTemplate>
                        </telerik:GridTemplateColumn>

以下是我尝试过但不起作用的事情:

        function OpisBlur() {
            if (event.propertyName == 'value') {
                var grid = $find("<%=RadGPozycje.ClientID %>");
                var masterTableView = grid.get_masterTableView();
                var iloop;
                if (masterTableView != null) {
                    var gridItems = masterTableView.get_dataItems();
                    var i;
                    for (i = 0; i < gridItems.length; ++i) {
                        var gridItem = gridItems[1];
                        var cell = gridItem.get_cell("poz_nazwa");
                        var controlsArray = cell.getElementsByTagName('input');
                        if (controlsArray.length > 0) {
                            var rdo = controlsArray[0];
                            rdo.value = "valueofchangeditem";                         
                        }
                    }
                }
            } 
        }

我的方法有两个最明显的问题:

  1. 我只更改所选项目,而不是全部。当我尝试使用masterTableView.get_editItems()时,IE表示没有这样的方法。
  2. 此代码产生堆栈溢出,因为函数发生在propertychange上,而在其中我改变了属性。
  3. 您能帮我找到实现所需功能的解决方案吗?

1 个答案:

答案 0 :(得分:0)

在列的ItemTemplate中,您可以放置​​带有className的标签吗?那么您是否能够使用新值更新具有该类的页面上的所有内容?

$('.poz_nazwaClass').val("valueofchangeditem");    

如果你不使用jQuery,那么添加一个标签,element.getElementsByTagName('poz_nazwaTag')然后遍历我认为的元素。