Bind XML Node Value To GridView Column In ASP.NET Using XPath
Given in a datasource object where in you have a column which contains an XML string and you want to bind a certain node value instead of the entire XML string to GridView column, here's a solution using XPath.
ASPX:
C# Code:
Output:
ASPX:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <asp:GridView ID="gvPersons" runat="server" AutoGenerateColumns="False" BackColor="White" Width="400px" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"> <AlternatingRowStyle BackColor="#F7F7F7" /> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" > <ItemStyle Width="50px" /> </asp:BoundField> <asp:BoundField DataField="XMLData" HeaderText="Name" > <ItemStyle Width="350px" /> </asp:BoundField> </Columns> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <SortedAscendingCellStyle BackColor="#F4F4FD" /> <SortedAscendingHeaderStyle BackColor="#5A4C9D" /> <SortedDescendingCellStyle BackColor="#D8D8F0" /> <SortedDescendingHeaderStyle BackColor="#3E3277" /> </asp:GridView> |
C# 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 | protected void BindToGridXPath() { XmlDocument xmlDoc; XmlNode xmlNode; String xpathExpr; DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("ID",typeof(int)), new DataColumn("XMLData", typeof(string)) }); DataRow row = dt.NewRow(); row["ID"] = 1; row["XMLData"] = "<Person><Name>James Minervo</Name><Age>33</Age></Person>"; DataRow row1 = dt.NewRow(); row1["ID"] = 2; row1["XMLData"] = "<Person><Name>Mike Phill</Name><Age>45</Age></Person>"; //...codes to manipulate the datatable xmlDoc = new XmlDocument(); xmlDoc.LoadXml(row["XMLData"].ToString()); xpathExpr = "/Person/Name"; xmlNode = xmlDoc.SelectSingleNode(xpathExpr); row["XMLData"] = xmlNode.InnerText; xmlDoc = new XmlDocument(); xmlDoc.LoadXml(row1["XMLData"].ToString()); xpathExpr = "/Person/Name"; xmlNode = xmlDoc.SelectSingleNode(xpathExpr); row1["XMLData"] = xmlNode.InnerText; dt.Rows.Add(row); dt.Rows.Add(row1); gvPersons.DataSource = dt; gvPersons.DataBind(); } |
Output:
Comments
Post a Comment