gridview奇数行索引不显示数据

时间:2013-03-15 20:06:54

标签: c# asp.net

我的Gridview有一个类别列。 此列编辑模板具有DropDownList。 下拉列表数据源:

protected void grdProducts_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList ds = (DropDownList)e.Row.FindControl("ddlCategory");
        int ids = Convert.ToInt16(((Label)e.Row.FindControl("LID")).Text);
        ds.DataTextField = "Name";
        ds.DataValueField = "ID";
        ds.DataSource = model.Categories.ToList();
        ds.DataBind();
        var idBynames = model.Products.Where(s => s.ID == ids).FirstOrDefault();
        string names = idBynames.CategoryName;
        var categorys = model.Categories.Where(s => s.Name == names).FirstOrDefault();
        ds.SelectedValue = categorys.ID.ToString();
    }
} 

所以问题是奇数行索引下拉列表为空但偶数行索引工作正常。有什么问题?我无法看到它。

1 个答案:

答案 0 :(得分:1)

您会注意到DataControlRowState设置了FlagsAttribute。如果您设置了AlternatingRowStyle,那么您的交替行将包含RowState,其中包含标记DataControlRowState.Alternate

通过将DataControlRowState.Edit语句更改为:

,尝试检查if标志而不管其他任何标志
if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow)

添加按位运算符仅检查Edit的标志值。