4

条件に基づいて、グリッドビューのいくつかの行でリンクボタンを有効または無効にしたい..ある行でリンクボタンを有効にし、同じグリッドビューの別の行で無効にすることはできますか??私のコードはここにあります

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{LinkButton lnk2 = (LinkButton)e.Row.FindControl("LinkButton2");
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        SqlCommand cmd12 = new SqlCommand("Select testsession_status from student_vs_testsession_details where  testsession_id='" + v_testid.Text + "' ", con12);
        SqlDataReader dr12 = cmd12.ExecuteReader();
        while (dr12.Read())
        {
            string test_status = dr12[0].ToString();
            LinkButton lnk2 = (LinkButton)e.Row.FindControl("LinkButton2");
            foreach (GridViewRow row in GridView1.Rows)
            {
                if (v_testtype == "Theory Test" && test_status == "Completed")
                {
                    lnk2.Visible = true;
                }
                else
                {
                    lnk2.Visible = false;
                }

            }




        }
4

2 に答える 2

5

はい、RowdataBound イベントで簡単に実行できますがlnk2.Visible、コードでプロパティを使用しています。

別の要件にプロパティを使用している可能性がありVisibleますが、それがリンクボタンの表示/非表示にのみ使用されていることを確認したいだけです。Linkbutton を有効/無効にするには、Linkbutton のEnabledプロパティを使用します。なので:

lnk2.Enabled = true;// to enable linkbutton.
lnk2.Enabled = false;// to disable linkbutton.

行インデックスを使用して実行したい場合e.Row.RowIndexは、グリッドビューの「RowDatabound」イベント内で現在の行インデックスを見つけることができます。なので:

if(e.Row.RowIndex==2)
{
  LinkButton lnk2 = (LinkButton)e.Row.FindControl("LinkButton2");
  lnk2.Enabled=false;
}

同じ行の他の列の値に基づいて Linkbutton を有効/無効にする場合は、Rowdataboundイベント内で同じことを行うことができます。なので:

string Namecolumnvalue = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Name"));
LinkButton lnk2 = (LinkButton)e.Row.FindControl("LinkButton2");
if(Namecolumnvalue =="Disable")
{      
  lnk2.Enabled=false;
}
else{
  lnk2.Enabled=true;
}
于 2013-06-20T07:28:44.663 に答える