使用数据设置GridView的属性

时间:2009-02-04 14:48:26

标签: c# webforms

我需要将GridView中BoundField的'ReadOnly'属性设置为记录集中由同一GridView显示的位字段的值。

我知道我可以在代码中实现这一点,但我感到很奇怪,如果有可能在属性内使用< %%>以声明方式执行此操作。段?

干杯,

杰米

3 个答案:

答案 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;
            }
        }
    }

我很失望,我必须通过索引引用我想要禁用的行。可能有一种方法可以通过数据字段引用这些行而不遍历所有行,但我乍看之下找不到它。

感谢您的帮助!