0

嗨,我想在具有特殊值的条件下禁用网格视图中的链接底部控件。例如,如果一行的计数变为 0,则该行的链接底部应该是不可见的。我应该怎么办?我应该在哪里写代码?这是我在行命令网格视图中编写的鳕鱼,但它仅适用于我将链接推到底部!但我想在加载之前将此鳕鱼应用到我的页面。请指导我

    int idx = Convert.ToInt32(e.CommandArgument);

    idx = idx - (GridView1.PageSize * GridView1.PageIndex);

    int ID = (int)GridView1.DataKeys[idx].Value;
    string connStr = ConfigurationManager.ConnectionStrings["dbconn"].ConnectionString;
    SqlConnection sqlconn = new SqlConnection(connStr);
    SqlCommand sqlcmd = new SqlCommand();
    sqlcmd = new SqlCommand("SELECT count(ID) FROM ReviwerArticle where ArticleID=@ArticleID", sqlconn);
    sqlcmd.Parameters.AddWithValue("@ArticleID", ID);

    sqlconn.Open();
    int count = ((int)sqlcmd.ExecuteScalar());

    sqlconn.Close();
    if (count == 0)
    {
                ((LinkButton)GridView1.Rows[idx].Cells[0].FindControl("LinkButton4") as LinkButton).Visible = false;

    }
4

2 回答 2

0

然后不要尝试这样做,onrowcommand因为这只会在执行操作时触发。如果您在代码隐藏中使用一个函数来加载您的数据,那么此时有多少行被推送到gridview。如果行为零,则禁用该按钮。如果行大于 0,则启用该按钮。

于 2012-10-21T03:18:26.380 回答
0

在 GridView 的 RowDataBound 事件中执行此操作。

 if (e.Row.RowType == DataControlRowType.DataRow)
        {
            int ID = Convert.ToInt32(GridView1.DataKeys[e.Row.RowIndex].Value;
    string connStr = ConfigurationManager.ConnectionStrings["dbconn"].ConnectionString;
    SqlConnection sqlconn = new SqlConnection(connStr);
    SqlCommand sqlcmd = new SqlCommand();
    sqlcmd = new SqlCommand("SELECT count(ID) FROM ReviwerArticle where ArticleID=@ArticleID", sqlconn);
    sqlcmd.Parameters.AddWithValue("@ArticleID", ID);

    sqlconn.Open();
    int count = ((int)sqlcmd.ExecuteScalar());

    sqlconn.Close();
    if (count == 0)
    {
                ((LinkButton)e.Row.Cells[0].FindControl("LinkButton4") as LinkButton).Visible = false;

    }
        }
于 2012-10-21T04:55:19.507 回答