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その後、アクションが実行されたときにのみ起動するため、これを実行しようとしないでください。コードビハインドの関数を使用してデータをロードしている場合は、その時点でグリッドビューにプッシュされている行数を確認します。行がゼロの場合は、ボタンを無効にします。行が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 に答える