コード (C#) を使用して XPath クエリの結果をテキスト ボックスに表示する方法について、誰か教えてもらえますか? XPath クエリが適用されると、私のデータソースは正しく (再) バインドされているように見えますが、結果のデータを取得する方法が見つかりません。
どんな助けでも大歓迎です。
3 に答える
XMLDataSource は、データ バインド コントロールで使用するように設計されています。ASP.NET の TextBox は、データ バインドされたコントロールではありません。したがって、目的を達成するには、データ バインディングを備えたテキスト ボックス コントロールを見つけるか、別の方法で結果を表示する必要があります。
たとえば、Repeater コントロールを使用して、独自のレンダリング テンプレートを作成できます。
<asp:Repeater id="Repeater1" runat="server" datasource="XMLds">
<ItemTemplate>
<input type="text" value="<%# XPath("<path to display field>")%>" />
</ItemTemplate>
</asp:Repeater>
適切な回答を提供できるようにするには、さらに情報が必要です。ここで公開できる既存のコード スニペットはありますか?
一般的な考え方は、XmlDataSource.XPath プロパティを XmlDataSource.Data プロパティのフィルターとして使用することです。テキスト ボックスに Data prop の内容を表示しようとしましたか?
SelectedIndexChanged イベントが発生すると、DropDownList の選択に基づいて、XMLDataSource オブジェクトの XPath が更新されます。
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
XMLds.XPath = "/controls/control[@id='AuthorityType']/item[@text='" + ddl.SelectedValue + "']/linkedValue";
XMLds.DataBind();
}
XPath 文字列に問題はありません。正しく機能し、正しいノードに解決されることを出力してテストできます。私が問題を抱えているのは、XmlDataSource に格納されていると思われるデータを取得することです。具体的には、データを取得して TextBox に出力します。上記の関数の一部としてこれを実行できるようにしたいと思います。
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
XMLds.XPath = "/controls/control[@id='AuthorityType']/item[@text='" + ddl.SelectedValue + "']/linkedValue";
XMLds.DataBind();
myTextBox.Text = <FieldFromXMLDataSource>;
}
お時間をいただきありがとうございます。