Disable GridView AlternateRows

本文关键字:AlternateRows GridView Disable | 更新日期: 2023-09-27 17:54:25

我目前得到一个GridView,其中包含几个文本值,其中几个转换成下拉列表单击编辑。这需要我访问单元格的当前文本值,并在单击编辑后相应地设置下拉菜单的selecteindex。这适用于……好吧,一半的行,因为只有那些有RowStyle"编辑",其他人有"备用|编辑",这是一个麻烦,因为我不需要那个功能。

这是我的代码:

protected void gridVariables_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //this only works at RowIndex 0, 2, 4 etc.
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        switch (((DataRowView)e.Row.DataItem).Row.ItemArray[2].ToString())
        {
            case "True":
                ((CheckBox)e.Row.Cells[0].Controls[1]).Checked = true;
                break;
            case "False":
                ((CheckBox)e.Row.Cells[0].Controls[1]).Checked = false;
                break;
            default:
                break;
        }
        ((DropDownList)e.Row.Cells[3].Controls[1]).Items.FindByValue(((DataRowView)e.Row.DataItem).Row.ItemArray[3].ToString()).Selected = true;
    }
}

GridView由TemplateFields组成,TemplateFields在ItemTemplate中有标签,或者是CheckBox(索引0)或DropDownList(索引3)作为edittitemtemplate,其他的是"正常的"BoundFields。由于某些原因,我觉得不能在不完全破坏这篇文章格式的情况下发布asp-markup。

那么,是否有任何方法可以改善我的编程结构,让它与"编辑"answers"编辑|交替"行一起工作,或者禁用交替行功能?

谢谢,丹尼斯

Disable GridView AlternateRows

DataControlRowState是基于标志的枚举,所以正确的写条件的方法是

if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)

注意按位&操作符-它既适用于普通行,也适用于备用行。