2014-08-28 2 views
1

Мне было предложено использовать cfGrid, чтобы разрешить редактирование загруженной электронной таблицы перед окончательной фиксацией базы данных. Я был знаком с cfGrid еще в CF 5/6 днях, но не использовал его в последнее время. Поэтому я могу просто неправильно интерпретировать данные.Почему cfGrid, по-видимому, передает неверные данные?

Мой вызов сетки выглядит следующим образом:

<cfgrid name="uGrid" 
     format="html" 
     query="xlsData" 
     title="Edit Uploaded Data" 
     striperows="yes" 
     selectmode="edit" 
     delete="yes"> 
      <cfgridcolumn name="queryRowNum" display="true" /> 
      <cfloop list="#replace(form.columnList, " ", "", "All")#" index="i"> 
       <cfgridcolumn name="#i#" header="#i#" width="200" select="Yes" /> 
      </cfloop> 
    </cfgrid> 

загружать следующие данные, которые правильно отображается в сетке:

QueryRowNum profileID speakingDate 
    1 1 1/1/2014 
    2 2 1/15/2014 
    3 3 3/7/2014 
    4 5 5/9/2014 
    5 6 11/8/2014 

меняю данные на первой линии на 1/10/2014 и дату в строке 3 - 3/17/2014, а затем представить сетку. На следующей странице я удаляю область формы, чтобы я мог видеть, что происходит cfGrid. Я планирую просмотреть пройденные массивы, чтобы делать мои обновления. Это то, что я вижу в виде рамки:

UGRID.QUERYROWNUM 
    array 
    1 3 
    2 4 
    UGRID.ROWSTATUS.ACTION 
    array 
    1 U 
    2 U 
    UGRID.SPEAKINGDATE 
    array 
    1 1/10/14 
    2 3/17/14 

Я бы вместо того, чтобы ожидать это:

UGRID.QUERYROWNUM 
    array 
    1 1 
    2 3 
    UGRID.ROWSTATUS.ACTION 
    array 
    1 U 
    2 U 
    UGRID.SPEAKINGDATE 
    array 
    1 1/10/14 
    2 3/17/14 

Мои ожидания (на основе документации) является то, что любая строка, которая изменяется будет иметь, что весь ряд прошел мимо. Затем я могу использовать массив queryRowNum, чтобы узнать, какая строка запроса потребуется обновить с новыми данными. Поскольку я обновил первую строку и третью строку, и у них есть queryRowNum из 1 и 3 соответственно, я бы ожидал, что в массиве uGrid.QueryRowNum.

Это допущение неверное? Если да, то как узнать, какую строку запроса обновить?

Этот сервер работает, я считаю, CF9.

EDIT

Как ни странно, я только заметил, что я могу изменить то, что передается вместе в неизмененном колонках на основе того, что клетка я выбрал, когда я нажимаю на кнопку отправки. Если я выберу столбец, который я изменил в первой строке и отправлю форму, тогда все будет работать правильно.

ответ

0

Я также заметил это странное поведение. Я не нашел решение для формата «html». Обходной путь, который я использовал, - это «флеш-формат». Одно изменение с HTML на flash отправляет все правильные данные.

<cfif isdefined('form.submit')> 
    <cfdump ="#form1#"> 
    <cfgridupdate grid = "uGrid" dataSource = "#DSN" tableName = "#tablename#" keyOnly="true" > 
</cfif> 

<cfquery name="xlsData">  
</cfquery> 

<cfform name="form1" action="#cgi.script_name#" format="flash" method="post"> 

<cfgrid name="uGrid" 
      format="flash" 
      query="xlsData" 
      title="Edit Uploaded Data" 
      striperows="yes" 
      selectmode="edit" 
      delete="yes"> 

      <cfgridcolumn name="queryRowNum" display="true" /> 
      <cfloop list="#replace(form.columnList, " ", "", "All")#" index="i"> 
        <cfgridcolumn name="#i#" header="#i#" width="200" select="Yes" /> 
      </cfloop> 
    </cfgrid> 
    <cfinput name="submit" type="Submit" value="Save All Changes"> 
</cfform> 
Смежные вопросы