You need to sign in to do that
Don't have an account?
ruparupa
Visualforce内でのJavaScriptの値取得方法について
お世話になっております。
<apex:dataTable>タグ内で特定のカラムに同じセレクトボックスを表示し、
そのセレクトボックスで選択された値を取得したいと考えております。
値の取得方法として、JavaScriptでテーブル内のカラムを順に読み込み、
カラム内の値をカンマなどでつなげてApexにhiddenで返そうと考えたのですが、
JavaScriptで<apex:dataTable>タグ内のセレクトボックスの選択値の取得方法がわかりませんでした。
上記のようなコードで、JavaScript内で<apex:dataTable>タグ内のセレクトボックスで選択された値を
取得するにはどのようにすればよいでしょうか。
もしくはJavaScriptを使わずに実装できる方法などございますでしょうか。
ご存知のこと、お気づきの点などございましたら、ご教授頂けましたら幸いです。
どうぞよろしくお願いいたします。
<apex:dataTable>タグ内で特定のカラムに同じセレクトボックスを表示し、
そのセレクトボックスで選択された値を取得したいと考えております。
値の取得方法として、JavaScriptでテーブル内のカラムを順に読み込み、
カラム内の値をカンマなどでつなげてApexにhiddenで返そうと考えたのですが、
JavaScriptで<apex:dataTable>タグ内のセレクトボックスの選択値の取得方法がわかりませんでした。
public with sharing class testController { String[] countries = new String[]{}; public PageReference test() { return null; } public List<SelectOption> getItems() { List<SelectOption> options = new List<SelectOption>(); options.add(new SelectOption('US','US')); options.add(new SelectOption('CANADA','Canada')); options.add(new SelectOption('MEXICO','Mexico')); return options; } public String[] getCountries() { return countries; } public void setCountries(String[] countries) { this.countries = countries; } List<Account> accounts; public List<Account> getAccounts() { if(accounts == null) accounts = [select name, owner.name from account limit 5]; return accounts; } }
<apex:page controller="testController" > <apex:form > <apex:dataTable value="{!accounts}" var="account" id="theTable" rowClasses="odd,even" styleClass="tableClass"> <apex:column > <apex:outputText value="{!account.name}"/> </apex:column> <apex:column > <apex:selectList value="{!countries}" multiselect="false" size="1"> <apex:selectOptions value="{!items}"/> </apex:selectList> </apex:column> </apex:dataTable> <apex:commandButton value="Test" action="{!test}" rerender="out" status="status" onclick="testScript(); "/> <script type="text/javascript"> function testScript () { var test = document.getElementById("{!$Component.theTable}"); for (var i = 0; i < test.rows.length; i++) { alert(test.rows[i].cells[1].innerHTML); //ここでセレクトボックスで選択された値を取得したい } } </script> </apex:form> </apex:page>
上記のようなコードで、JavaScript内で<apex:dataTable>タグ内のセレクトボックスで選択された値を
取得するにはどのようにすればよいでしょうか。
もしくはJavaScriptを使わずに実装できる方法などございますでしょうか。
ご存知のこと、お気づきの点などございましたら、ご教授頂けましたら幸いです。
どうぞよろしくお願いいたします。
サンプルコードです。
Visualforce Page Controller Class Wrapper Class
Wrapperクラスを用意することで一つのチェックボックスと一つの取引先を紐付けることが可能です。
All Answers
サンプルコードです。
Visualforce Page Controller Class Wrapper Class
Wrapperクラスを用意することで一つのチェックボックスと一つの取引先を紐付けることが可能です。
次のような感じで要素の情報にアクセスできると思います。
JavaScript側で取得が必要な場合はこんな感じになると思います。
丁寧なご回答ありがとうございます!!
上記ですが、 のようにはできないですよね。
IDを指定して、構造を変えないようにして「{!$Component.〜」を使わないようにしないといけないですよね。
Wrapperクラスの方も確認してみます!!
ありがとうございます。
下記のようにselectListnにIDをつけ、 for文内で下記のようにすることでセレクトボックスの選択値を取得できました。