ColdFusion:修改cfgrid中的组合框选项

时间:2012-08-04 18:41:46

标签: javascript html dom extjs coldfusion

我有<cfgrid>一个<cfgridcolumn>。我正在使用该列的values属性:

<cfform>
  <cfgrid name="grdBrokers"
          format="html"
          bind    ="cfc:CFC.Brokers.getGridData ( {cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})" 
          onChange="cfc:CFC.Brokers.editGridData( {cfgridaction},{cfgridrow},{cfgridchanged})"
          selectMode = "edit">
    <cfgridcolumn name="name" header="Name" values="Item1,Item2" >
  </cfgrid>
</cfform>

values属性会在用户编辑Name列中的单元格时显示组合框: In-cell combobox resulting from Values attribute

我需要动态(不重新加载页面)更改该组合框的选项列表。经过大量研究(stackoverflow.com,raymondcamden.com等),我得出结论,没有ColdFusion方法可以做到这一点,所以我想我会使用JavaScript。要找到组合框的id,我查看了我的网页的HTML源代码,并找到了以下内容:

<form name="CFForm_1" id="CFForm_1" action="/index2.cfm" method="post" onsubmit="return _CF_checkCFForm_1(this)">
  <div  id="cfgrid1344103796431" style="border: 1px solid #cccccc; overflow: hidden;"></div> 
    <select id='cf_grid_select0' class='ygrid-editor'>
      <option value='Item1'>Item1</option>
      <option value='Item2'>Item2</option>
    </select> 
  <div>
  <input type="hidden" name="__CFGRID__CFForm_1__grdBrokers" value="" /></div>
</form>

所以,我想要的ID是cf_grid_select0。但是,document.getElementById()找不到此元素。我还使用FireBug检查了该页面,但在DOM选项卡上找不到cf_grid_select0元素。它包含在document.body.innerHTML中作为原始HTML文本,但不是DOM中自己的元素。

以下是我的代码,试图找到cf_grid_select0

<script type="text/javascript">
  function find( ) {
    var cbxFind = document.getElementById( 'cf_grid_select0' );

    if ( cbxFind ) alert( "Found!" );
    else           alert( "Not found!" );
  }  
</script>

<form>
  <input id="btnFind" type="button" onclick="find();" value="Find">
</form>

当我点击Find按钮时,会弹出一个“未找到!”的弹出窗口。

我的问题是:使用JavaScript或jQuery,如何找到我的浏览器显然知道的<select>,但似乎在DOM中?我怀疑ColdFusion.getGridObject()可能是我正在寻找的,但我找不到使用该方法选择组合框的方法。

谢谢!

更新 在页面加载后,ColdFusion似乎正在使用ExtJS将<select>转换为ComboBox,显然是从DOM中删除了<select>。我现在正在研究如何找到ExtJS ComboBox

1 个答案:

答案 0 :(得分:1)

我几乎肯定会使用jQuery!试试这个:

<script>
$(document).ready(function() {

var $mySelect = $("#cf_grid_select0");
alert("I found it..." + $mySelect.attr("id"))

});
</script>
祝你好运。

NINJA编辑

如果您正在查看真实来源,那么它就在DOM中。如果您正在查看“生成的”JS类型的源代码,那么它很棘手,但我认为jQuery可以检测添加到DOM的新元素。