-3
Привет, люди, которые хорошо разбираются в xslt, можете вам помочь. Я просто хочу отобразить этот флажок, если флажок «Получить значение» должен быть проверен еще не отмеченным. Я использовал выбор, но это не дает мне то, что я хочу. Он просто дает мне только установленный флажок.Как использовать select like if else condition in xslt
Вот мой C# код
public DataSet printIST(long Id)
{
var query0 = (from request in _entities.ISTMotivations
select new
{
ISTID = request.ISTID,
ISTMotivation = request.ISTReason.LookupDesc,
ISTMotivationID = request.ISTMotivationID,
ISTReasonID = request.ISTReasonID
}).OrderBy(x => x.ISTReasonID);
var query2 = (from request in _entities.ISTMotivations
where request.ISTID==Id
select new
{
ISTMotivationID=request.ISTMotivationID,
ISTID=request.ISTID,
ISTReasonID=request.ISTReasonID
}).OrderBy(x=>x.ISTReasonID);
DataSet ds = new DataSet();
ds.Tables.Add(query0.CopyToDataTable()); ds.Tables[0].TableName = "Table4";
ds.Tables.Add(query2.CopyToDataTable()); ds.Tables[1].TableName = "Table5";
return ds;
}
Вот мой код XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:key name ="keyMoticationID" match ="NewDataSet/Table4" use ="ISTMotivationID"/>
<xsl:key name ="keycheck" match ="NewDataSet/Table5" use ="concat(ISTID, '+',ISTMotivationID)"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<html>
<xsl:variable name="lst4" select="//NewDataSet/Table4" />
<xsl:variable name="lst5" select="//NewDataSet/Table5" />
<style>
TABLE {empty-cells: show; border-spacing: 0px; margin: 0px; padding: 0px;width:100%;}
.pagebreak {page-break-after: always;}
TD.HeaderText {font-family:Arial;font-size:14pt;border:0;margin:0;background:none;font-weight:bold;}
TR.HeaderText {font-family:Arial;font-size:14pt;border:0;margin:0;background:none;font-weight:bold;}
TR.NormalText {font-family:Arial;font-size:10pt;border:0;margin:0;background:none;font-weight:normal;}
TD.NormalText {font-family:Arial;font-size:10pt;border:0;margin:0;background:none;font-weight:normal;}
TABLE.SpacedRows TD {padding:2pt 0 8pt 0; vertical-align:top;}
TABLE.NormalText {font-family:Arial;font-size:10pt;border:0;margin:0;background:nonkeyIDe;font-weight:normal;}
</style>
<title>
<center>Application for IST transfer</center>
</title>
<table border="1" cellspacing="0" cellpadding="0" width="100%" style="border-style:solid;border-color:Black;border-width:1px;font-family:Arial;border-collapse: collapse;font-size:11px;" >
<xsl:for-each select="$lst4[generate-id(.) = generate-id(key('keyMoticationID', ISTMotivationID)[1])]">
<xsl:variable name="intISTMotivationID">
<xsl:value-of select="ISTMotivationID" />
</xsl:variable>
<tr>
<td style="width:2%; padding:2px;text-align:center;">
<xsl:value-of select ="$lst4[ISTMotivationID=$intISTMotivationID]/ISTReasonID"/>
</td>
<td style="width:96%; padding:2px;">
<xsl:value-of select ="$lst4[ISTMotivationID=$intISTMotivationID]/ISTMotivation"/>
</td>
<xsl:for-each select="$lst5[generate-id(.) = generate-id(key('keycheck',concat(ISTID,'+', $intISTMotivationID))[1])]">
<xsl:variable name="intISTID">
<xsl:value-of select="ISTID" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$lst5[ISTID=$intISTID and ISTMotivationID=$intISTMotivationID]/ISTReasonID">
<td valign="top" style="width:2%; padding:3px; text-align:center;">
<input id="chkISTReasonID" name="ISTReasonID" type="checkbox" checked="checked"></input>
</td>
</xsl:when>
<xsl:otherwise>
<td valign="top" style="width:2%; padding:3px;text-align:center;">
<input id="chkISTReasonID" name="ISTReasonID" type="checkbox"></input>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</html>
</fo:root>
</xsl:template>
</xsl:stylesheet>
'' это то, что вам нужно, но не зная, как вы пытались его использовать, трудно понять, почему вы не можете заставить его работать. –
@AdrianWragg Я не знаю, почему не отображается флажок без отметки –
Очевидным ответом является то, что это потому, что ваш тест всегда возвращает true - этот узел существует. Здесь недостаточно информации, чтобы, к сожалению, копировать проблему. Попробуйте переписать это как наименьший возможный способ демонстрации проблемы - выньте много ненужного кода, включите XML и т. Д. –