读书人

GridView的RowDataBound有关问题

发布时间: 2012-02-09 18:22:27 作者: rapoo

GridView的RowDataBound问题
GridView的RowDataBound问题

HTML code
前台 <asp:GridView ID="gvwPurview" runat="server"AutoGenerateColumns="False"OnRowDataBound="gvwPurview_RowDataBound"            OnRowDeleting="gvwPurview_RowDeleting"OnRowEditing="gvwPurview_RowEditing" DataKeyNames="iPvId"            OnRowCancelingEdit="gvwPurview_RowCancelingEdit" OnRowUpdating="gvwPurview_RowUpdating">            <Columns> <asp:TemplateField HeaderText="上级权限">                    <ItemTemplate>                        <%# DataBinder.Eval(Container.DataItem, "cPrtName").ToString().Trim() %>                    </ItemTemplate>                    <EditItemTemplate>                        <cc1:ParentPurviewDropDownList ID="dropEditParentPurview" runat="server">                        </cc1:ParentPurviewDropDownList>                    </EditItemTemplate>                </asp:TemplateField><asp:TemplateField HeaderText="类型">                    <ItemTemplate>                        <%# DataBinder.Eval(Container.DataItem, "cPvType").ToString().Trim() %>                    </ItemTemplate>                    <EditItemTemplate>                        <cc1:PurviewTypeDropDownList ID="dropEditPurviewType" runat="server">                        </cc1:PurviewTypeDropDownList>                    </EditItemTemplate>                </asp:TemplateField><asp:CommandField UpdateText="更新" HeaderText="编辑" CancelText="取消"                    EditText="编辑" ShowEditButton="True" />                <asp:CommandField HeaderText="删除"                     DeleteText="<div id="de" onclick="JavaScript:return confirm('确定删除吗?')">删除</div> "                      ShowDeleteButton="True" />            </Columns>        </asp:GridView>

C# code
后台/// <summary>        ///  绑定行时触发        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void gvwPurview_RowDataBound(object sender, GridViewRowEventArgs e)        {            if (e.Row.RowType == DataControlRowType.DataRow)            {                if (e.Row.RowState == DataControlRowState.Edit)                {                                       //权限类型                    PurviewTypeDropDownList dropEditPurviewType = (PurviewTypeDropDownList)e.Row.FindControl("dropEditPurviewType");                    dropEditPurviewType.DataBind();                    dropEditPurviewType.SelectedValue = DataBinder.Eval(e.Row.DataItem, "iPvType").ToString();                    //上级权限                    ParentPurviewDropDownList dropEditParentPurview = (ParentPurviewDropDownList)e.Row.FindControl("dropEditParentPurview");                    dropEditParentPurview.PurviewID = this.txtPrtId.Text;                    dropEditParentPurview.FDAID = this.FDAID.ToString();                    dropEditParentPurview.DataBind();                    dropEditParentPurview.SelectedValue = DataBinder.Eval(e.Row.DataItem, "iPrtId").ToString();                }            }        }问题:当点编辑时,一行可以显示绑—ropDownList控件,另一行不行,不绑—ropDownList控件。即一行的e.Row.RowState是DataControlRowState.Edit而另一行确是DataControlRowState.Alternate,我想要每一行都是DataControlRowState.Edit,如何设置?


[解决办法]
C# code
        if (e.Row.RowType == DataControlRowType.DataRow)        {            if ((e.Row.RowState & DataControlRowState.Edit) != 0)            {             }        }
[解决办法]
RowState即是Alternate又是Edit的状态判断语法:

1、最标准的写法
e.Row.RowState == (DataControlRowState.Alternate|DataControlRowState.Edit)

2、将RowState转换为整数
if (((int)e.Row.RowState)==5 )
{
// do something
}
注:DataControlRowState枚举:
Normal: 0
Alternate: 1
Selected: 2
Edit: 4
Insert: 8
如果偶数列既是Alternate,又是Edit,所以用((int)e.Row.RowState)==5表示偶数列处于编辑状态。

3、将RowState转换为字符串
if (e.Row.RowState==DataControlRowState.Edit || e.Row.RowState.ToString().Equals("Alternate, Edit"))

注:奇数列处于编辑状态,只需用
Row.RowState == DataControlRowState.Edit;
就可以了

读书人网 >asp.net

热点推荐