簡體   English   中英

從客戶端獲取Telerik網格中選定行的值

[英]Get value of selected row in telerik grid from client side

我試圖在客戶端使用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?

好吧,最終我找到了它:

 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);
var id = $find("<%= RadGrid1.ClientID %>").get_masterTableView().get_selectedItems()[0].getDataKeyValue("Id");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM