【问题标题】:Get value of selected row in telerik grid from client side从客户端获取 Telerik 网格中选定行的值
【发布时间】:2017-07-28 15:22:17
【问题描述】:

我正在尝试在客户端使用 javascript 获取 GridBoundColumn 的值,其中 DataField="id"。每当用户单击该行的图像按钮时,我应该检索该行的 id 并调用传递此 id 的 web 方法...我在同一个 aspx 页面中尝试了这个脚本块:

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript">
      function test(object) {
         try {
           var master = $find('<%= RadGrid1.ClientID %>').get_masterTableView(); 
           var selectedItems= master.get_selectedItems()[0].getDataKeyValue("id"); 
           alert(selectedItems);
         } catch (err) {alert(err);}
      }
    </script>
</telerik:RadCodeBlock>

但抛出错误:无法读取未定义的属性 getDataKeyValue... 我发现所选项目的长度为 0:

var selectedItems= master.get_selectedItems().length;  // selectedItems = 0

这里遗漏了什么?如何获取 id 值?下面是我的 Telerik 网格代码:

    <telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True" AllowPaging="True" AutoGenerateColumns="False" Width="100%" ShowFooter="true" ItemStyle-Wrap="false" FooterStyle-Wrap="false" FooterStyle-Width="100px" PagerStyle-Wrap="false" EnableEmbeddedSkins="false"                        GridLines="None" EnableViewState="false">
     <HeaderContextMenu EnableEmbeddedSkins="False"></HeaderContextMenu>
     <FooterStyle Wrap="False"></FooterStyle>
     <ItemStyle Wrap="False"></ItemStyle>
     <PagerStyle Visible="true" PagerTextFormat="Change page: {4}    <b>{5}</b> items in <b>{1}</b> pages" />

     <MasterTableView DataKeyNames="id" ClientDataKeyNames="id"  PageSize="15" TableLayout="Fixed">

       <NoRecordsTemplate>
         <div> No records to display.</div>
       </NoRecordsTemplate>

       <Columns>
         <telerik:GridBoundColumn DataField="id" ReadOnly="True" UniqueName="id"
                                        Visible="false">
         </telerik:GridBoundColumn>
         <telerik:GridTemplateColumn UniqueName="TemplateColumn" ItemStyle-Width="35px" HeaderStyle-Width="35px">
           <ItemTemplate>
             <asp:ImageButton ID="imgUpload" runat="server" CausesValidation="False" ClientIDMode="Static" data-id='<%# Eval("id") %>' ImageUrl="~/Images/Misc/File-Upload-icon.png"  OnClientClick="test(this);" TabIndex="-1" ToolTip="Upload" />
           </ItemTemplate>                                    
           <HeaderStyle Width="35px"></HeaderStyle>
           <ItemStyle Width="35px"></ItemStyle>
         </telerik:GridTemplateColumn>
      </Columns>

   </MasterTableView>
   <ClientSettings>
   </ClientSettings>
   <FilterMenu EnableEmbeddedSkins="False" EnableEmbeddedBaseStylesheet="False">
   </FilterMenu>
   <SortingSettings EnableSkinSortStyles="False" />
 </telerik:RadGrid>

编辑:

我也试过这个解决方案:

var imgUpload = document.getElementById("imgUpload");
var imgUpload_ID = imgUpload.getAttribute('data-id');
alert(imgUpload_ID);

var Clicked_rowIndex = object.parentNode.parentNode.rowIndex;
alert(Clicked_rowIndex);     

关于 Clicked_rowIndex:每次点击都返回正确的 rowindex (1,2,3 ....) 但是对于所有行,它都显示相同的 id(第一行的 id); 如何在 Clicked_rowIndex 和 imgUpload_ID 之间进行组合以获取所选 row_index 的 id?

【问题讨论】:

  • 也许您应该处理参数“object”而不是 get_selectedItems()[index],因为单击图像时可能没有选定的行。

标签: javascript jquery asp.net telerik


【解决方案1】:

好的,终于找到了:

 var Rows = $find('<%= RadGrid1.ClientID %>').get_masterTableView().get_dataItems();
 var Clicked_rowIndex = object.parentNode.parentNode.rowIndex;
 var row = Rows[Clicked_rowIndex-1];
 id = row.getDataKeyValue("id");
 alert(id);

【讨论】:

    【解决方案2】:
    var id = $find("<%= RadGrid1.ClientID %>").get_masterTableView().get_selectedItems()[0].getDataKeyValue("Id");
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多