2017-03-08 9 views
0

クライアント側でjavascriptを使用してDataField = "id"であるGridBoundColumnの値を取得しようとしています。ユーザーが行の画像ボタンをクリックするたびに、私はこの行のIDを取得し、このIDを渡すWebメソッドを呼び出す必要があります...私は同じaspxページにこのスクリプトブロックを試してみました:クライアント側からtelerikグリッド内の選択行の値を取得

<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> 

しかし、エラーがスローされます。ここで何を

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

を逃している:未定義のプロパティgetDataKeyValue ... を読み取ることができない私は、選択した項目の長さが0であるましたか?どのようにid値を取得できますか?以下の私telerikグリッドコードです:Clicked_rowIndexに関する

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);  

::私はまた、このソリューションを試してみました

<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> 

編集各クリックは正しいrowIndexに(1を、返却されます2,3 ...) しかし、すべての行で同じID(最初の行のID)を表示しています。 Clicked_rowIndexとimgUpload_IDを組み合わせて、選択したrow_indexのIDを取得するにはどうすればよいですか?

+1

はおそらく、あなたは、パラメータ「オブジェクト」ではなくget_selectedItems()[インデックス]で作業する必要があります。 –

答えて

0

okが最終的に私はそれを見つけた:画像がクリックされたときに何も選択された行が存在しない場合があるよう

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); 
関連する問題