2012-03-16 6 views
0

Я довольно новый в xforms. и этот вопрос кажется очень простым. У меня есть xform, который содержит два текстовых поля и кнопку управления. Я хочу, чтобы, когда пользователь отправляет форму, значения в текстовом поле сохраняются в xform-модели. Как я могу это сделать?Как сохранить введенные пользователем значения в текстовом поле XForms

Код приведен ниже, когда я нажимаю кнопку, значения в элементе модели не изменяются.

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form="http://www.w3.org/2002/xforms"  xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en"> 
<head> 
    <link rel="stylesheet" type="text/css" href="test.css" /> 
<script type="text/javascript" src="formfaces.js"></script> 


<form:model> 
    <form:instance> 
    <data xmlns=""> 
<textbox1>0</textbox1> 
<textbox2>1</textbox2> 
<textbox3>2</textbox3> 
<textbox4>3</textbox4> 
</data> 

</form:instance> 
<form:submission action="Text.html" id="submission" method="put" replace="instance"/> 
</form:model> 
</head> 


<body> 
<table> 
<tr> 
<td> 
<form:input ref="/data/textbox1"> 
<form:label>TextBox1</form:label> 
</form:input> 
</td><td> 
<form:input ref="/data/textbox2"> 
<form:label>TextBox2</form:label> 
</form:input> 
</td></tr> 

<tr><td><form:input ref="/data/textbox3"> 
<form:label>TextBox3</form:label> 
</form:input> 
</td><td><form:input ref="textbox4"> 
<form:label>TextBox4</form:label> 
</form:input> 
</td></tr> 



</table> 
<form:submit submission="submission"><form:label>Submit</form:label></form:submit> 


</body> 

</html> 
+0

Как сказал @grtjn, это должно работать автоматически, но если вы пробовали и не работаете для вас, возможно, вы можете поделиться своим кодом с нами, чтобы мы могли воспроизвести проблему, которую вы видите. – avernet

+0

Я поделился кодом. пожалуйста, ответьте, как мы можем slove this –

ответ

0

Этого следует позаботиться автоматически.

Но если вы пытаетесь сразу отобразить изменения модели на экране, обязательно добавьте атрибуты incremental="true" к элементам ввода xforms, чтобы каждое нажатие клавиши генерировало события обновления, а также элементы вывода xforms также обновлялись.

добавил:

Вы, кажется, подчиняясь в HTML. Я предполагаю, что это html, содержащий форму. Вам не нужно так называть это, чтобы обновить модель. Обычно вы вызываете скрипт с PUT submit, чтобы получить его на сервере. PUT обычно также не возвращает ничего, хотя он может вернуть копию того, что вы были PUT'ing.

Я сделал ваш код внесенными двумя важными изменениями, чтобы показать, что модель обновляется автоматически. Я скопировал ваши таблицы входов формы и переименовал входы для выходов. Я также добавил добавочный атрибут на входах, чтобы обновлять выходные данные после каждого нажатия клавиши. Вы также можете заметить, что я добавил немного CSS, но это только, чтобы сделать метку и значение выходов различимы:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form="http://www.w3.org/2002/xforms"  xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en"> 
<head> 
    <link rel="stylesheet" type="text/css" href="test.css" /> 
<script type="text/javascript" src="formfaces.js"></script> 
     <style type="text/css"> 
      label { 
       display: block; 
       float: left; 
       clear: both; 
       text-align: right; 
       padding-right: 1em; 
       width : 110px; 
      } 
     </style> 


<form:model> 
    <form:instance> 
    <data xmlns=""> 
<textbox1>0</textbox1> 
<textbox2>1</textbox2> 
<textbox3>2</textbox3> 
<textbox4>3</textbox4> 
</data> 

</form:instance> 
<form:submission action="test.xml" id="submission" method="put" replace="instance"/> 
</form:model> 
</head> 


<body> 
<table> 
<tr> 
<td> 
<form:input ref="/data/textbox1" incremental="true"> 
<form:label>TextBox1</form:label> 
</form:input> 
</td><td> 
<form:input ref="/data/textbox2" incremental="true"> 
<form:label>TextBox2</form:label> 
</form:input> 
</td></tr> 

<tr><td><form:input ref="/data/textbox3" incremental="true"> 
<form:label>TextBox3</form:label> 
</form:input> 
</td><td><form:input ref="textbox4" incremental="true"> 
<form:label>TextBox4</form:label> 
</form:input> 
</td></tr> 



</table> 
<table> 
<tr> 
<td> 
<form:output ref="/data/textbox1"> 
<form:label>TextBox1</form:label> 
</form:output> 
</td><td> 
<form:output ref="/data/textbox2"> 
<form:label>TextBox2</form:label> 
</form:output> 
</td></tr> 

<tr><td><form:output ref="/data/textbox3"> 
<form:label>TextBox3</form:label> 
</form:output> 
</td><td><form:output ref="textbox4"> 
<form:label>TextBox4</form:label> 
</form:output> 
</td></tr> 



</table> 
<form:submit submission="submission"><form:label>Submit</form:label></form:submit> 


</body> 

</html> 

Если заменить значение атрибута действия представления со ссылкой на какой-то сценарий .asp , он будет вызван и получит весь экземпляр в теле запроса. Обязательно верните полный экземпляр, так как он будет заменен.

HTH!

+0

Я поделился кодом, но его не работает. ответьте –

+0

Спасибо ...! еще одна вещь, которую я хочу задать. можете ли вы мне посоветовать, как мы можем вызвать скрипт с put submit, чтобы получить значения, хранящиеся в XML-файле на сервере. Я пытался и мог загружать значения из XML-файла, но я не знаю, как хранить значения в этом файле. Я использую asp.net для сервера и сервера sql для базы данных –

+0

@ zeeshan-hasan Я добавил абзац до конца. Надеюсь, вам это поможет. – grtjn

Смежные вопросы