진술 (예를 들어 테이블 릭스의 폭 또는 텍스트 상자의 내용을 변경) : 내가 xsd.exe 도구를 ReportDefinition.xsd를 직렬화 복원? 보고서의 속성에 수식과 표현식을 사용하는 것이 더 쉽습니다. 그러나 XML 조작을 통해이 작업을 수행하려는 경우 deserialize 된 객체 대신 xml을 변경하는 것이 좋습니다. 내가 이것을 말하는 이유는 그것이 더 깨끗하기 때문입니다. 역 직렬화 된 객체를 사용하면 루프를 수행해야하며 각 객체가 원하는 노드인지 확인한 다음 원하는 노드를 찾을 때까지이 프로세스를 계속 진행하십시오.
개체가 직렬화되고 문자열처럼 XML 형식 인 경우 XElement를 사용하여 원하는 항목을 빠르게 가져올 수 있습니다. 예 : 보고서 정의 (파일 xml 문자열)에서 보고서의 너비를 가져 오는 데이 값을 사용합니다.
public String GetWidth()
{
XElement Report = XElement.Parse(this._ReportDefinition);
return Report.Element({http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Width").Value;
}
또는 또 다른 예
이 당신에게 도움이다
// The grabs the names of all tablix report items from the report definition.
public String GetReportItemName(String DataSetName)
{
XElement Report = XElement.Parse(this._ReportDefinition);
String ReportItemName = String.Empty;
XElement Body = Report.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Body");
XElement ReportItems = Body.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}ReportItems");
foreach (XElement ReportItem in ReportItems.Elements())
{
if (ReportItem.Name == "{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Tablix")
{
String Name = ReportItem.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}DataSetName").Value;
if (Name == DataSetName)
{
ReportItemName = ReportItem.Attribute("Name").Value;
}
}
}
return ReportItemName;
}
희망.
XML 조작으로 왜 이것을 변경 하시겠습니까? 기본 데이터를 기반으로 변경하려는 경우 수식을 사용하여 속성을 설정할 수 있습니다. 이것들은 보고서 실행시 계산되는 동적 속성을 생성합니다. –