GridView和RowDataBound事件

时间:2014-07-09 12:27:22

标签: c# mysql asp.net gridview

我可以在 GridView 中编辑单行。

但是当在MySQL数据库中,字段" card" 的值不为空时我需要在 GridView 的这一行中停止编辑(和在关闭状态下传递该行。)

我尝试了这个解决方案,但在GridView中,即使字段"的值,"关闭状态" 中的所有GridView行也是如此。卡"为空,为什么?

条件插入 RowDataBound事件,它是否正确?

我的代码如下。

我非常感谢您在解决这个问题时能给我的任何帮助。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var obj = ((DataRowView)e.Row.DataItem)["card"];
        ImageButton edit = (ImageButton)e.Row.FindControl("imgbtnEdit");

        if (obj != null)
        {
            edit.Enabled = false;
            edit.ToolTip = "Closed state";
        }
    }


    if (e.Row.RowType == DataControlRowType.Pager)
    {
        DropDownList ddl = (DropDownList)(e.Row.FindControl("ddlpages"));
        Label lblPageCount = (Label)e.Row.FindControl("lblPageCount");

        if (lblPageCount != null)
            lblPageCount.Text = GridView1.PageCount.ToString();

        for (int i = 1; i <= GridView1.PageCount; i++)
        {
            ddl.Items.Add(i.ToString());
        }

        ddl.SelectedIndex = GridView1.PageIndex;

        if (GridView1.PageIndex == 0)
        {
            ((ImageButton)e.Row.FindControl("ImageButton1")).Visible = false;
            ((ImageButton)e.Row.FindControl("ImageButton2")).Visible = false;
        }

        if (GridView1.PageIndex + 1 == GridView1.PageCount)
        {
            ((ImageButton)e.Row.FindControl("ImageButton3")).Visible = false;
            ((ImageButton)e.Row.FindControl("ImageButton4")).Visible = false;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这是因为DBNull.Valuenull是两回事。

var obj = ((DataRowView)e.Row.DataItem)["card"];
if (!DBNull.Value.Equals(obj))
{
    edit.Enabled = false;
    edit.ToolTip = "Closed state";
}

这将检查&#34;卡&#34; value是一个空数据库值,而不是一个null对象。