【问题标题】:coldfusion problem with flash form binding : PART 2flash 表单绑定的冷融合问题:第 2 部分
【发布时间】:2011-02-03 16:48:31
【问题描述】:

我不确定为什么这个给我“未定义”。 imgNames 在那里。

  <cfquery name="getArt" datasource="cfartgallery">
   select * from art where artid < 10
 </cfquery>
 <cfdump var="#getArt#">
 <cfform name="myform" width="620" height="750" format="Flash" timeout="100" preservedata="yes" wmode="transparent">    
<cfformitem type="script">
    function updateSelectedArt():Void{
      var elem;
      var imgName;
      var values = [];
      var total  = parseInt(myform.pickmany_total);
      for (var i = 1; i <= total; i++) {
        elem = _root["pickmany"+ i];
        imgName = _root["img"+ i];
          if (elem.selected) {
              values.push(imgName.value);
          }
      }    
      // use whatever delmiter makes sense
      _root["pickmany_selected"].text = values.join(",");
   }    
</cfformitem>
<cfoutput query="getArt">
    <cfinput name="pickmany#currentRow#" type="checkbox" value="#artname#" onClick="updateSelectedArt()" label="#artname#"><br/>
    <cfinput name="img#currentRow#" type="text" value="#largeImage#"><br/>
</cfoutput>
<cfinput type="hidden" name="pickmany_total" value="#getArt.recordCount#">
   <cfinput type="text" name="pickmany_selected"  value="" size="50">
  </cfform>

【问题讨论】:

  • 很高兴您可以使用它,但我建议您使用 AJAX 功能而不是 Flash。

标签: coldfusion cfform


【解决方案1】:

哎呀..

应该是 values.push(imgName.text);

这行得通:

   <cfquery name="getArt" datasource="cfartgallery">
     select * from art where artid < 10
  </cfquery>
  <cfdump var="#getArt#">
  <cfform name="myform" width="620" height="750" format="Flash" timeout="100" preservedata="yes" wmode="transparent">    
<cfformitem type="script">
    function updateSelectedArt():Void{
      var elem;
      var imgName;
      var values = [];
      var total  = parseInt(myform.pickmany_total);
      for (var i = 1; i <= total; i++) {
        elem = _root["pickmany"+ i];
        imgName = _root["img"+ i];
          if (elem.selected) {
              values.push(imgName.text);
          }
      }    
      // use whatever delmiter makes sense
      _root["pickmany_selected"].text = values.join(",");
   }    
</cfformitem>
<cfoutput query="getArt">
    <cfinput name="pickmany#currentRow#" type="checkbox" value="#artname#" onClick="updateSelectedArt()" label="#artname#"><br/>
    <cfinput name="img#currentRow#" type="text" value="#largeImage#"><br/>
</cfoutput>
<cfinput type="hidden" name="pickmany_total" value="#getArt.recordCount#">
<cfinput type="text" name="pickmany_selected"  value="" size="50">
 </cfform>

【讨论】:

  • 啊,flash 表单的怪异之处 ;) 复选框是 selectedvaluetext,隐藏字段没有textvalue
  • 利。是的,隐藏字段没有价值。我想用图像名称从 getArt 查询中创建一个数组,并使用 values.push(imgArr[i]);那没用
  • 顺便说一句,我并不总是检查封闭线程上的 cmets。但是,如果你在我的名字前面放一个@符号,它将显示在我的收件箱中。
  • @Leigh,感谢您的精彩提示!仍在学习如何使用本网站。
【解决方案2】:

这是没有文本字段的:

  function updateSelectedArt():Void{
       var elem;
       var imgName;
       var values = [];
       var imgArray = [];
       <cfoutput query="getArt">
        imgArray[#getArt.currentRow#] = '#getArt.largeImage#';
       </cfoutput>
       var total  = <cfoutput>#getArt.recordCount#</cfoutput>;
       for (var i = 1; i <= total; i++) {
           elem = _root["pickmany"+ i];
           imgName = _root["img"+ i];
           if (elem.selected) {
                values.push(imgArray[i]);
            }
       }    
       _root["pickmany_selected"].text = values.join(",");
     } 

【讨论】:

  • 您可以使用 toScript() 自动将 cf 对象转换为 actionscript 对象。我不确定数组与文本字段在编译方面是否会有所不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多