if ステートメント内で SQL から取得した値を使用したいと考えています。理想的には、同等のことをしたい
<% If DataBinder.Eval(Container, "DataItem.BookID") == 1 Then%>
正しい構文でこれを行う方法はありますか?
if ステートメント内で SQL から取得した値を使用したいと考えています。理想的には、同等のことをしたい
<% If DataBinder.Eval(Container, "DataItem.BookID") == 1 Then%>
正しい構文でこれを行う方法はありますか?
これは、条件を aspx ファイルに入れる方法です。私が理解していることに基づく大まかなサンプルベース:
<%# System.Convert.ToInt32((DataBinder.Eval(Container.DataItem, "BookID")!="") ? DataBinder.Eval(Container.DataItem, "BookID"):0) %>
BookID に他のタイプではなく int があることを確認してください。
さらに説明する:
if else 条件が必要な場合:
<%# If DataBinder.Eval(Container.DataItem, "DATAFIELD") <> "" Then
Response.Write("something")
End If %> // This is invalid
上記のステートメントは、次のように aspx ファイルに適切に書き込むことができます。
<%# DataBinder.Eval(Container.DataItem, "DataField").Equals("")?"":"Something"%>
これができるかどうか、またはあなたが要求している方法でできないかどうかはわかりません。
ご存じないかもしれませんが、これを行う一般的な方法は、次のようにマークアップにコントロールを含めることです。
<asp:listView ID="SophiesListView" ...
..
<ItemTemplate>
<asp:HyperLink ID="hlGlossary" title="click here for more information" target="_blank" runat="server" />
</ItemTemplate>
</asp:listView />
次に、コードビハインドで、リストビュー/リピーター/データグリッドまたは何を持っているかを見つけて、ItemDataBound を選択します。このイベント内で、次のようにします。
If e.Item.DataItem("vehicleType") IsNot DBNull.Value AndAlso e.Item.DataItem("vehicleType") = "JETSKI" Then
DirectCast(e.Item.FindControl("hlGlossary"), HyperLink).NavigateUrl = "Glossary.aspx#JETSKI"
DirectCast(e.Item.FindControl("hlGlossary"), HyperLink).Text = "?"
End If
ページ ロジックをできるだけシンプルに保つための最善の策は、コントロールの Visible プロパティにデータをバインドすることです。たとえば、BookID == 1 の場合に一部の html のみを表示する場合は、次のようにデータ ソースに新しいプロパティを作成します。
public bool Show
{
get
{
return BookID == 1;
}
}
そしてあなたのページにはあなたが持っているでしょう
<asp:Placeholder runat="server" Visible='<%# Eval("Show") %>'>
...html goes here...
</asp:Placeholder>