使用<%#Bind%>的一种棘手的方法在ASP.NET中

时间:2012-01-10 22:34:07

标签: asp.net listview bind

在ASP.NET中,我可以使用<%#Bind%>要实现双向数据绑定,那么数据源控件可以为我完成更新功能。

但是,我认为只显示简单格式,例如

,这很容易
<%# Bind("InsertDate") %>

但是,如果我想在InsertDate不存在时显示'N / A'。然后如何使用&lt;%#Bind%&gt;实现条件检查?

我知道Bind函数支持格式字符串,比如

<%# Bind("InsertDate", "0:{dd MMM yyyy}") %>

但它无法根据InsertDate的内容更改格式。

我甚至尝试使用:

<%# FormatString(Bind("InsertDate").ToString()) %>

似乎无效,通常适用于Eval功能。

另一个例子是我在表中有一个按位列(如5),它由ListView控件包装的checkboxlist表示,如

    <asp:checkboxlist>
     <asp:ListItem value="1" text="OptionA">
     <asp:ListItem value="2" text="OptionB">
     <asp:ListItem value="4" text="OptionC">
    </asp:checkboxlist>

然后如何使用&lt;%#Bind%&gt;实现双向绑定以将按位列绑定到此复选框列表?

目前我所做的是:

  1. 在ListView的ItemDataBound事件处理程序中设置checkboxlist的所选项(值)

  2. 使用HiddenField并将数据绑定到此隐藏字段 实现双向数据绑定。

  3. 在LivtView的ItemUpdating事件处理程序中,我将ListViewUpdateEventArgs的NewValue属性更新为我想要的值。然后EntityDataSource可以正确地执行更新操作。

  4. 但我认为这种方法不容易和好。

    还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

尝试使用公共数据类型。

在代码隐藏中将变量声明为

public string name;
//Do whatever assignment operations to your variable "name"

在您的aspx页面上。你可以称之为

<% Response.Write(name); %>