Het volgende:
Ik heb een pagina waar een placeholder in staat, hierin laad ik door middel van xml/xslt deze webcontrol met een dropdownlist web control .
Nu ziet de aanroep van de dropdownlist control als volgt eruit in XSL:
Deze word getransformeerd en het resultaat word getoont in de
placeholder.
Dit werkt allemaal uitstekend en krijg netjes de dropdownlist te zien.
Nu indien ik een selectie maakt word niet het event gestart die ik zojuist hebt aangegeven namelijk "addPageComponent" in de "onSelectIndexChanged".
Indien ik gewoon niet dynamisch de web controls via xml/xsl doet en zet het rechtstreek in de code, werkt het wel en start ie de event op.
Ik heb even een test gemaakt om het voor jullie wat te verduidelijken en hieronder geplaatst zodat jullie het probleem kunnen simuleren
[index.aspx]
==================================
[components.xml]
==================================
[components.xsl]
De volgende bestanden kunnen ook gedownload worden om direct te testen:
index.aspx
components.xml
components.xsl
Bedankt alvast voor de genome moeite om dit probleem op te lossen.
Ik heb een pagina waar een placeholder in staat, hierin laad ik door middel van xml/xslt deze webcontrol met een dropdownlist web control .
Nu ziet de aanroep van de dropdownlist control als volgt eruit in XSL:
code:
1
2
3
4
5
6
7
8
| <asp:DropDownList id="ddlPageType" runat="server" onSelectedIndexChanged="addPageComponent" AutoPostBack="True">
<xsl:for-each select="values/value">
<xsl:variable name="sub_field_name" select="@name"/>
<xsl:variable name="sub_field_value" select="."/>
<xsl:variable name="sub_field_translated_name" select="$translations/element[@original = $sub_field_name] "/>
<asp:ListItem Value="{$sub_field_value}"><xsl:value-of select="$sub_field_translated_name" /></asp:ListItem>
</xsl:for-each>
</asp:DropDownList> |
Deze word getransformeerd en het resultaat word getoont in de
placeholder.
Dit werkt allemaal uitstekend en krijg netjes de dropdownlist te zien.
Nu indien ik een selectie maakt word niet het event gestart die ik zojuist hebt aangegeven namelijk "addPageComponent" in de "onSelectIndexChanged".
Indien ik gewoon niet dynamisch de web controls via xml/xsl doet en zet het rechtstreek in de code, werkt het wel en start ie de event op.
Ik heb even een test gemaakt om het voor jullie wat te verduidelijken en hieronder geplaatst zodat jullie het probleem kunnen simuleren
[index.aspx]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| <%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Web.UI" %>
<%@ import Namespace="System.Web.UI.WebControls" %>
<%@ import Namespace="System.Web.UI.HtmlControls" %>
<%@ import Namespace="System.Xml" %>
<%@ import Namespace="System.Xml.Xsl" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
public void addPageComponent(Object sender, EventArgs e)
{
Response.Write("Clicked");
}
public void transFormXML(string xmlFile, string xslFile)
{
XmlDocument xml = new XmlDocument();
XslTransform xslt = new XslTransform();
xml.Load(Server.MapPath(xmlFile));
xslt.Load(Server.MapPath(xslFile));
StringWriter sw = new StringWriter();
xslt.Transform(xml, null, sw);
string result = sw.ToString();
result = result.Replace("xmlns:asp=\"removeme\"", "");
Control ctrl = Page.ParseControl(result);
phComponents.Controls.Add(ctrl);
}
public void Page_Init(Object sender, EventArgs e) {
transFormXML("components.xml", "components.xsl");
}
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>Test</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR" />
<meta content="C#" name="CODE_LANGUAGE" />
<meta content="JavaScript" name="vs_defaultClientScript" />
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema" />
</head>
<body leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
<form id="pageForm" runat="server">
Selecteer: (deze werkt en fired de onclick)<br>
Dropdownlist #1:
<asp:DropDownList id="ddComponentsType" runat="server" OnSelectedIndexChanged="addPageComponent" AutoPostBack="True">
<asp:ListItem Value="image">image</asp:ListItem>
<asp:ListItem Value="text">text</asp:ListItem>
</asp:DropDownList>
<p />=====================<p />
Selecteer: (Deze werkt niet en fired niet de onclick)<br>
<asp:placeholder id="phComponents" runat="server"></asp:placeholder>
</form>
</body>
</html> |
==================================
[components.xml]
code:
1
2
3
4
5
6
7
8
9
10
| <?xml version="1.0"?>
<component name="component_properties">
<property type="select" name="component_name">
<name>component</name>
<values>
<value name="component_image">image</value>
<value name="component_text">text</value>
</values>
</property>
</component> |
==================================
[components.xsl]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:asp="removeme">
<xsl:template match="/component/property">
<xsl:choose>
<xsl:when test="@type='select'">
<tr>
<td align="right" valign="middle" width="175">Dropdownlist #2:<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text></td>
<td align="left" valign="middle" width="400">
<asp:DropDownList id="ddlPageType" runat="server" OnSelectedIndexChanged="addPageComponent" AutoPostBack="True" EnableViewState="True">
<xsl:for-each select="values/value">
<asp:ListItem Value="{@name}"><xsl:value-of select="."/></asp:ListItem>
</xsl:for-each>
</asp:DropDownList>
</td>
<td width="100"><xsl:text disable-output-escaping="yes">&nbsp;</xsl:text></td>
</tr>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> |
De volgende bestanden kunnen ook gedownload worden om direct te testen:
index.aspx
components.xml
components.xsl
Bedankt alvast voor de genome moeite om dit probleem op te lossen.