DWR addRows () с идентификаторами элементов - PullRequest
0 голосов
/ 13 мая 2009

Вызов всех гуру DWR!

В настоящее время я использую обратный Ajax для динамического добавления данных в таблицу на веб-странице.

Когда я запускаю следующий метод:

public static void addRows(String tableBdId, String[][] data) {
    Util dwrUtil = new Util(getSessionForPage()); // Get all page sessions
    dwrUtil.addRows(tableBdId, data);
}

Новая строка создается на моей веб-странице по мере необходимости.

Однако, чтобы позже обновить эти вновь созданные значения, теги должны иметь идентификатор элемента, чтобы я мог получить к нему доступ.

Я посмотрел на javadoc DWR, и вы можете указать некоторые дополнительные опции, см. http://directwebremoting.org/dwr/browser/addRows, но это не имеет большого смысла для меня, документация очень скудная.

Если бы кто-нибудь мог дать мне подсказку относительно того, как я мог бы указать идентификаторы элементов для созданных элементов td, я был бы очень признателен. В качестве альтернативы, если кто-нибудь знает об альтернативном подходе, я бы хотел узнать.

С уважением

Karl

Ответы [ 2 ]

0 голосов
/ 15 октября 2015

Эта строка вашего кода действительно работает ??

dwrUtil.addRows(tableBdId, data);

Для работы метода DWR addRows требуется как минимум 3 параметра из 4 , это:

  1. id : идентификатор элемента таблицы (предпочтительно, элемента tbody);
  2. массив : массив (или объект из DWR 1.1), содержащий одну запись для каждой строки в обновленной таблице;
  3. cellfuncs : массив функций (одна на столбец) для извлечения данных ячейки из переданных данных строки;
  4. параметры : объект, содержащий различные параметры.

id , array и cellfuncs обязательны , и в вашем случае вам нужно будет передать options также потому, что вы хотите настроить создание строки и установить идентификаторы TD . проверить это:

Внутри аргумента options вам нужно использовать один параметр с именем cellCreator, чтобы сообщить свой собственный способ создания html-элемента td. Проверьте это:

// Use the cellFuncs var to set the values you want to display inside the table rows
// the syntax is object.property
// use one function(data) for each property you need to show on your table.
var cellFuncs = [
		         	function(data) { return data.name_of_the_first_object_property ,
		         	function(data) { return data.name_of_the_second_object_property; } 
		         	];											
											
DWRUtil.addRows(
				tableBdId, 
				data, 
				cellFuncs, 
				{
					  // This function is used for you customize the generated td element
					  cellCreator:function(options) {
							var td = document.createElement("td");
							// setting the td element id using the rowIndex
							// just implement your own id bellow
							td.id = options.rowIndex;
							return td;
					 }
				});		
0 голосов
/ 15 мая 2009

Самое близкое, что я мог получить, это передать несколько аргументов, чтобы дать элементу идентификатор. Смотрите ниже:

    public static void addRows(String tableBdId, String[] data, String rowId) {

    Util dwrUtil = new Util(getSessionForPage()); // Get all page sessions

    // Create the options, which is needed to add a row ID
    String options = "{" +
            "  rowCreator:function(options) {" +
            "    var row = document.createElement(\"tr\");" +
            "     row.setAttribute('id','" + rowId + "'); " +
                    "    return row;" +
                            "  }," +
            "  cellCreator:function(options) {" +
            "    var td = document.createElement(\"td\");" +
            "    return td;" +
                 "  }," +
            "  escapeHtml:true\"}";


    // Wrap the supplied row into an array to match the API
    String[][] args1 = new String[][] { data };
    dwrUtil.addRows(tableBdId, args1, options);
...