2

次の .aspx ページがあります。データベースにある単語を検索していますが、すべて正常に動作します。単語がデータベースに存在しない場合にメッセージを表示するハイパーリンクもあります。

しかし、唯一の問題は、単語を検索し、その単語がデータベースにない場合、最初からハイパーリンクが表示されないことです。それを機能させるには、ENTER を 2 回クリックし、消えるには CLEAR を 2 回クリックする必要があります。 .

page_load の後にボタンがあることが問題であることはわかっていますが、その解決策が見つかりません。私が試したのは、別の関数 private void load_data() を作成し、page_load からすべてをそれにコピーすることです。そして、load_page と button2_click では、load_data(); を呼び出すだけです。うまくいきません。

コードは次のとおりです。

namespace TRI_Portal.ScreenPop.Gloss
{
    public partial class Gloss_Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (GridView2.Rows.Count == 0)
            {

                HyperLink1.Visible = true;
            }

            else
            {
                HyperLink1.Visible = false;
            }

            String s = Request.QueryString["language"];

            Language1.Text = Server.HtmlEncode(s);

        }    

      }
    }

私もこれを試しましたが、うまくいきませんでした。

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SetLink();
        }
    }
    private void SetLink()
    {
        if (GridView2.Rows.Count == 0)
        {

            HyperLink1.Visible = true;
        }

        else
        {
            HyperLink1.Visible = false;
        }

        String s = Request.QueryString["language"];

        Language1.Text = Server.HtmlEncode(s);
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        SetLink();
    }

助言がありますか?

4

1 に答える 1

1

GridView.DataBound イベントを処理する

protected void GridView1_DataBound(object sender, EventArgs e)
{
     SetLink();
}

そしてマークアップ:

<asp:GridView OnDataBound="GridView1_DataBound" ....

Page_Load イベントからコードを削除します。

于 2012-05-30T21:27:20.430 に答える