基于Gridview的RowDataBound事件中的行数据的单元格中的条件输出

时间:2012-03-12 12:16:58

标签: c# asp.net gridview

我有一点值(黑色)我想在gridview中显示它的状态,好像它是真的,行显示“是”,否则行显示“否”,这是我的代码,但结果不对,因为我的代码显示所有行“是”如果一个值为true,我想显示每一行状态

    protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataTable dt = GetData();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Boolean bitBlack = Convert.ToBoolean(dt.Rows[i]["Black"]);
                if (bitBlack)
                {
                    e.Row.Cells[7].Text = ("Yes");
                }
                else
                {
                    e.Row.Cells[7].Text = ("No");
                }
            }
        }
    }

3 个答案:

答案 0 :(得分:9)

您始终可以使用行DataItem来获取基础DataSource

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        bool isBlack = row.Field<bool>("Black");
        e.Row.Cells[7].Text = isBlack ? "Yes" : "No";
    }
}

答案 1 :(得分:2)

您是否需要在每个RowDatabound上遍历DataTable dt?

如果您不需要,可以尝试:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {

                Boolean bitBlack = Convert.ToBoolean(e.Row.Cells[7].Text);
                if (bitBlack)
                {
                    e.Row.Cells[7].Text = "Yes";
                }
                else
                {
                    e.Row.Cells[7].Text = "No";
                }

        }
    }

答案 2 :(得分:2)

我不知道您的数据源,但如果您可以评估它,请执行以下操作:

<asp:TemplateField HeaderText="Status">
            <ItemStyle CssClass="list" />
            <ItemTemplate>
                    <%# GetBit(Eval("BlackBit"))%>
            </ItemTemplate>
</asp:TemplateField>

代码隐藏:

private string GetBit(object objBit)
{
    if (Convert.ToInt32(objBit) == 1)
    {
        return "Yes";
    }
    return "No";
}