2011-02-02 38 views
0

如何使用單選按鈕在icefaces數據表中選擇一行?如何使用單選按鈕獲取選定的icefaces數據錶行?

我試着用以下

<h:selectOneRadio styleClass="none" valueChangeListener="#{bean.setSelectedItem}" 
       onclick="dataTableSelectOneRadio(this);"> 
       <f:selectItem itemValue="null" /> 
      </h:selectOneRadio> 

而且我的javascript

function dataTableSelectOneRadio(radio) { 
    var id = radio.name.substring(radio.name.lastIndexOf(':')); 
    var el = radio.form.elements; 
    for (var i = 0; i < el.length; i++) { 
     if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) { 
      el[i].checked = false; 
     } 
    } 
    radio.checked = true; 
} 

在另一文章中,我得到了一個答案,我應該用form.id.取代form.name但之後,我得到錯誤

radio.form is undefined 
var elements = radio.form.elements; 

有人可以幫助我如何解決這個問題。

我想用單選按鈕在icefaces數據表中選擇一行。

任何幫助是非常可觀的。

感謝

發佈我的生成html源

看到這裏是單選按鈕JSF代碼

<h:selectOneRadio valueChangeListener="#{bean.setSelectedItem}" 
id="reqselect" onclick="dataTableSelectOneRadio(this);"> 
<f:selectItem itemValue="null" /> 
</h:selectOneRadio> 

我在正確的HTML源代碼發佈衷心的歉意,我測試了一些別的東西,並從而錯誤的來源發佈。粘貼在下面是我的正確的html源碼,請看看你是否能找到一些東西。

+0

這個問題是由非ICEfaces的用戶無法回答的,如果你不表現出生成的HTML。 JavaScript在HTML上的webbrowser上運行,而不是在JSF上的webserver上運行。 – BalusC 2011-02-02 14:54:50

+0

原始問題在這裏:[JSF數據表選擇單行使用單選按鈕](http://stackoverflow.com/questions/4871423/jsf-datatable-select-one-row-using-radio-button) – BalusC 2011-02-02 14:56:24

+0

生成的代碼顯示它在`onkeypress`中,但是在JSF中你已經把它放在`onclick`中。咦? – BalusC 2011-02-02 15:29:05

回答

2

您應該使用冰:selectOneRadio與傳播佈局:

<ice:selectOneRadio id="myRadioId" layout="spread" ... /> 
<ice:dataTable ... > 
    <ice:column ...> 
     <ice:radio for="myRadioId" ... /> 
    </ice:column> 
    ... 
</ice:dataTable> 
0

這裏的每個單選按鈕的生成的HTML什麼樣子:

<table id="crud:tab_cr:9:_id53" border="0" onkeypress="dataTableSelectOneRadio(this);"> 
    <tr> 
    <td> 
     <input type="radio" name="crud:tab_cr:9:_id53" id="crud:tab_cr:9:_id53:_1" value="null" onkeypress="dataTableSelectOneRadio(this);Ice.util.radioCheckboxEnter(form,this,event);" /> 
     <label for="crud:tab_cr:9:_id53:_1">null</label> 
    </td> 
    </tr> 
</table> 

所以ICEfaces的顯然是渲染周圍的單選按鈕,整個HTML表格,並把JS功能上<table>爲好。 JS函數顯然不屬於那裏(除了onkeypress不正確的事實,它應該是onclick)。

<h:selectOneRadio>默認情況下不會呈現整個表格。這隻能意味着您使用<ice:selectOneRadio>實際上是,或者IceFaces替換了<h:selectOneRadio>的標準渲染器。你需要在這個角落修復它。或者替換<h:selectOneRadio>或向IceFaces傢伙報告錯誤,他們的無線電渲染器不正確地將JS功能放在<table>元素上。

相關問題