Avatar billede moller2567 Nybegynder
29. februar 2008 - 17:02 Der er 2 kommentarer

XML inden i gridview

Jeg gemmer noget XML i en database i tabel, som jeg bruger som en log.

Jeg vil gerne vise denne log i f.eks et gridview. Gridvievet viser desværre xml'en som en tekststreng, og det er ret ulæseligt, hvis det er en stor xml-fil.

Hvis jeg dobbeltklikker på en xml fil i stifinderen, så bliver den automatisk åbnet med IE og vist på en meget overskuelig måde.

Kan jeg få gridvievet til at vise de forskellige "xml-tekster" inde i felterne i gridvievet på samme måde som IE gør, hvis det havde været en ren xml-fil jeg åbnede.

Jeg har prøvet at putte en iframe i et templatefield, men her kan jeg ikke sætte indholdet fra en tekststreng.

Er der nogen, der har en ide ?
Avatar billede ieconfig Nybegynder
01. marts 2008 - 11:38 #1
transfomer din output med xslt
Avatar billede moller2567 Nybegynder
03. marts 2008 - 11:55 #2
Det var det, jeg ville undgå, og IE kan jo godt vise den uden at jeg transformerer min XML.

Jeg har løst det ved hjælp af LINQ og et Xelement. Når man kalder Xelement.ToString() bliver xml'en udskrevet på et læsbart format.

Jeg bruger et gridview med to kolonner, den første indeholder xml-teksten, og er skjult via mit stylesheet. Den næste kolonne indeholder en textbox, hvor jeg sætter værdien på gridviewets rowdatabound event.

<asp:GridView ID="gvXmlLog" runat="server" DataSourceID="SqlDs_USP_XMLLog_Hent"
  AutoGenerateColumns="False" onrowdatabound="gvXmlLog_RowDataBound" >
  <Columns>
      <asp:BoundField DataField="XmlTekst" HeaderText="XmlTekst"
          SortExpression="XmlTekst" ControlStyle-CssClass="ghost" HeaderStyle-
          CssClass="ghost" ItemStyle-CssClass="ghost" />
      <asp:TemplateField HeaderText="XML request/response">
        <ItemTemplate>
            <asp:TextBox ID="tbXmlTekst" runat="server" Wrap="false" 
                TextMode="MultiLine" Width="800" Rows="20" />
        </ItemTemplate>
      </asp:TemplateField>
  </Columns>
</asp:GridView>

protected void gvXmlLog_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
      string teksten = Server.HtmlDecode(e.Row.Cells[0].Text);
      XElement xlog = XElement.Parse(teksten);
       
      TextBox tbx = (TextBox)e.Row.FindControl("tbXmlTekst");
      if (tbx != null)
        tbx.Text = xlog.ToString();
  }
}

Lidt besværligt, men xml'en er nu læselig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester