I have been learning about using an XML file and an XLST file to create a user editable form however I have yet to find a successful working version of this including a toolkit procedure
Can it be done? If so has anyone actually done it and showed how? If not why not?
A not correctly formatted example of what I want to do:
<XML File>
<Input Name="NumbersOnly" FilteredTextBox="Yes" Type="NumbersWithNeg"/>
</XML>
gets me the output of this:
<
asp:TextBoxID="TextBox3"runat="server"></asp:TextBox><
ajaxToolkit:FilteredTextBoxExtenderID="ftbe"runat="server"TargetControlID="TextBox3"FilterType="Custom, Numbers"ValidChars="-"/>It can be done. Heres how
<Code on main page>
private
void CreateSurvey() {// Load the data sourceXPathDocument surveyDoc =newXPathDocument(Server.MapPath("ExSurvey.xml"));// Load the xslt to do the transformationsXslTransform transform =newXslTransform();transform.Load(Server.MapPath(
"MakeControls.xslt"));// Get the transformed resultStringWriter sw =newStringWriter();transform.Transform(surveyDoc,
null, sw);string result = sw.ToString();// remove the namespace attributeresult = result.Replace(
"xmlns:asp=\"remove\"","");result = result.Replace(
"xmlns:cc1=\"remove\"","");result =
"<%@. Register Assembly=\"AjaxControlToolkit\" Namespace=\"AjaxControlToolkit\" TagPrefix=\"cc1\" %>" + result;int i;// parse the control(s) and add it to the pageControl ctrl = Page.ParseControl(result);survey.Controls.Add(ctrl);
}
<XLST File>
<
xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:asp="remove"xmlns:cc1="remove"><
xsl:outputmethod="xml"indent="yes"encoding="utf-8"omit-xml-declaration="yes"/><
xsl:templatematch="/">
<
table><
xsl:for-eachselect="//question"><
tr><
tdvalign="top"><xsl:value-ofselect="@.name" /><
xsl:iftest="@.required = 'yes'"><
asp:RequiredFieldValidatorErrorMessage=" Required Field"runat="server"ControlToValidate="{@.name}" /></
xsl:if>
</
td><
td><
xsl:iftest="@.type='text'"><
asp:TextBoxid="{@.name}"runat="server" /><
cc1:FilteredTextBoxExtenderID="FilteredTextBoxExtender{@.name}"runat="server"TargetControlID="{@.name}"FilterType="Numbers"></
cc1:FilteredTextBoxExtender></
xsl:if><
xsl:iftest="@.type='radio'"><
asp:RadioButtonListid="{@.name}"runat="server"><
xsl:for-eachselect="choice"><
asp:ListItemValue="{@.value}"><xsl:value-ofselect="@.value" /></asp:ListItem></
xsl:for-each></
asp:RadioButtonList></
xsl:if></
td></tr></
xsl:for-each></
table><
asp:buttonid="submit"runat="server"Text="Submit" /></
xsl:template></
xsl:stylesheet>
No comments:
Post a Comment