• Asp.Net Datacontrolrowstate简介

    by{ guangboo }, published {2010-03-24}, Tag { .net / asp.net / }

    DataControlRowState 枚举

    该枚举在.net framework 2.0中新增加的,是指定数据控件,如DetailView,GridView中行的状态的。具有FlagAttribute属性,因此允许其成员值按位组合。

     

    [FlagsAttribute] 
    public enum DataControlRowState

    成员

    成员名称 说明
    Alternate 指示该数据控件行是交替行。 Alternate 状态在任何时候都可以与其他状态组合,例如与 NormalEditInsert 组合。这些行可能会受到数据控件的 AlternateRowStyle 属性影响(若已设置)。
    Edit 指示该行处于编辑状态,这通常是单击行的“编辑”按钮的结果。通常,EditInsert 状态互相排斥。
    Insert 指示该行是新行,这通常是单击“插入”按钮添加新行的结果。通常,InsertEdit 状态互相排斥。
    Normal 指示该数据控件行处于正常状态。Normal 状态与其他所有状态互相排斥。
    Selected 指示该行已被用户选定。

    官方介绍

    DataControlRowState 枚举标识数据控件(例如 DetailsViewGridView)中行的状态。行的状态可以是一个 DataControlRowState 值或值的组合,因此使用按位运算来确定该行的状态是否包括一个 DataControlRowState 值而非一个等效测试。DataControlRowState 枚举用于任何行类型,而不只用于 DataRow 行(通常,标头和脚注行的状态设置为 Normal)。

    当枚举整个 GridViewRowCollectionDetailsViewRowCollection 集合时,可以使用 DataControlRowState 枚举来分别标识 GridViewRowDetailsViewRow 对象的状态。如果正在编写使用行的数据控件,您可以使用 DataControlRowState 枚举来标识何时为行呈现不同的颜色(Alternate 值),或者用它来标识为编辑行而启用或禁用的控件(EditInsert 值)。

    示例:

    判断行在Edit模式

    (row.RowState & DataControlRowState.Edit) != 0

    而不能使用

    row.RowState == DataControlRowState.Edit

    判断行在Insert模式

    (row.RowState & DataControlRowState.Insert) != 0
    而不能使用
    row.RowState == DataControlRowState.Insert

    因为DataControlRowState的声明是:

    [Flags]
        public enum DataControlRowState {
            // 摘要:
            //     指示该数据控件行处于正常状态。System.Web.UI.WebControls.DataControlRowState.Normal 状态与其他状态相互排斥,但
            //     System.Web.UI.WebControls.DataControlRowState.Alternate 状态除外。
            Normal = 0,
            //
            // 摘要:
            //     指示该数据控件行是交替行。
            Alternate = 1,
            //
            // 摘要:
            //     指示该行已被用户选定。
            Selected = 2,
            //
            // 摘要:
            //     指示该行处于编辑状态,这通常是单击行的“编辑”按钮的结果。通常,System.Web.UI.WebControls.DataControlRowState.Edit
            //     和 System.Web.UI.WebControls.DataControlRowState.Insert 状态互相排斥。
            Edit = 4,
            //
            // 摘要:
            //     指示该行是新行,这通常是单击“插入”按钮添加新行的结果。通常,System.Web.UI.WebControls.DataControlRowState.Insert
            //     和 System.Web.UI.WebControls.DataControlRowState.Edit 状态互相排斥。
            Insert = 8,
        }