我需要将GridView中BoundField的'ReadOnly'属性设置为记录集中由同一GridView显示的位字段的值。
我知道我可以在代码中实现这一点,但我感到很奇怪,如果有可能在属性内使用< %%>以声明方式执行此操作。段?
干杯,
杰米
答案 0 :(得分:1)
是的,你可以这样做。创建一个TemplatedField并在绑定语句中使用
<%# ((Employee)Container.DataItem).IsApproved ? "yes" : "no" %>
或者您可以使用代码隐藏
中的方法<%# FormatBool(((Employee)Container.DataItem).IsApproved) %>
其中FormatBool是代码隐藏中的属性
protected string FormatBool(bool value)
{
if (value)
return "yes";
return "no";
}
答案 1 :(得分:0)
如果需要绑定到属性,我会使用TemplateField然后在那里设置行为。只有当你不能使用代码时才会这样,否则,这是你最好的选择。
我认为没有办法直接绑定BoundColumn的细节。
答案 2 :(得分:0)
我无法根据DetailView的数据找到一种以声明方式操纵BoundField或TemplateField属性的方法。
Bendewey非常慈悲地认为我绑定了一个业务对象,而事实上我在这个实例中直接处理数据 - 抱歉没有说清楚。
我在后面的代码中的解决方案如下:
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
DetailsView dv = (DetailsView)sender;
if (dv.DataItemCount > 0)
{
DataRowView data = (DataRowView)dv.DataItem;
bool isFixed = (bool)data["IsFixed"];
if (isFixed)
{
dv.Rows[2].Enabled = false;
dv.Rows[6].Enabled = false;
}
}
}
我很失望,我必须通过索引引用我想要禁用的行。可能有一种方法可以通过数据字段引用这些行而不遍历所有行,但我乍看之下找不到它。
感谢您的帮助!