- PR -

【ASP.NET 2.0】SQL Server 2005のフィールドに納められたxml値をバインドするには

1
投稿者投稿内容
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2008-07-03 09:50
表記の方法についておたずねします。

現在、SQL Server 2005に、"ID","Content"という2つのフィールドがあり、"Content"に、
<Specification>
<Spec Title="APW200" PDate="2007/2/15" Supplyer="JFE" />
</Specification>

などという要素XMLが入っている場合、これをデータバインド式で、
<ASP:Repeater id="cRep_Test" runat="server">
<ItemTemplate>
Title : <%# eval(????) %>
Title : <%# xpath(????) %>
</ItemTemplate>
</ASP:Repeater>
などの表記でバインディング表示できないでしょうか?

客先から支給されたデータがxmlフィールドを多用しており、正直面食らっております。
よろしくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-07-03 10:38
もっといい方法があるかもしれませんが、例えばこんな感じで表示でけます。

aspx側
コード:
<ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# GetTitle(Eval("Content")) %>'></asp:Label>
</ItemTemplate>



aspx.cs側
コード:
protected string GetTitle(object value)
{
    if( value == null)
        return null;

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.LoadXml(value.ToString());
    return doc["Specification"]["Spec"].Attributes["Title"].Value;
}

すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2008-07-03 21:42
rainさま、早々のご返答ありがとうございます。
そうかぁ、eval("なんとか")でバインドされてくる文字列値を、別メソッドでXML変換->要素パースして単一値を求めればいいわけですね。。
よく見たら、SQL Serverのxml型に相当する、DataSetデザイナ上のDataTableフィールドは、String型になっていました!

SQL Server2005のデータ型がXMLだったので舞い上がりましたが、自分的にはSQL Server上のDBが単純化されるため、(SQLが苦手な自分としては)良い方法だと思います。

色々と応用がありそうですが、とりあえず、ご教授いただいた方法で行きます。
今回はありがとうございました。多謝です。
1

スキルアップ/キャリアアップ(JOB@IT)