2017-03-03 8 views
0

にハイパーリンクをNavigateUrlプロパティを無効にします。 ハイパーリンクNavigateUrlプロパティが有効になっているので、それがブラウザに空白のページ(ウィンドウのポップアップ上)が開きますが、は私が<strong>変数AUT</strong>の値がゼロより小さいとき<strong>のHyperLink</strong>上<strong>NavigateUrl</strong>プロパティを無効にする必要があるのC#

は私が、成功せず、私は.csページのコードビハインドでこれを試してみました、クリックするとImageUrl

誰かが私を助けることができますか?

私のコードの下、事前に

ありがとう:

は.cs

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    {    
     if (aut > 0) 
     { 
      HyperLink button = (HyperLink)e.Row.FindControl("MMM"); 
      button.Enabled = true;     
     } 
     else 
     { 
      HyperLink button = (HyperLink)e.Row.FindControl("MMM"); 
      button.Enabled = false; 
      button.NavigateUrl = ""; 
     } 
    } 
} 

.aspxの

<asp:TemplateField HeaderText="MMM" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="ddl_Class_new"> 
    <ItemTemplate> 
     <asp:HyperLink ID="MMM" runat="server" NavigateUrl='<%# (String.IsNullOrEmpty(Eval("MMM").ToString()) ? String.Format("http://...?sId={0}&s=2", HttpUtility.UrlEncode(Base64ForUrlEncode(Eval("id").ToString()))) : "") %>' 
      ImageUrl='<%#(String.IsNullOrEmpty(Eval("MMM").ToString()) ? "/Images/bullett/redbul.gif" : "/Images/bullett/forestbul.gif")%>' 
      ToolTip='<%#(String.IsNullOrEmpty(Eval("MMM").ToString()) ? "Not Exists" : "Exists")%>' 
      Target="_blank" BorderStyle="None" ForeColor="Transparent" OnClick="if (!confirm('Confirm ?'))return false;window.open(this.href,'playsample','width=500,height=500,left=100,top=100,scrollbars=yes,dependent=yes,toolbar=no,location=no,status=no,directories=no,menubar=no,status=no,resizable=yes');return false;" 
      Enabled='<%#(!String.IsNullOrEmpty(Eval("MMM").ToString()) ? false : true)%>'> 
     </asp:HyperLink> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

空の文字列を "#"で置き換えてみてください – Aboc

+0

@Aboc:ありがとうございますが、変更はありません... –

答えて

0

あなたが設定しているすべてのこれらのプロパティをあなたのコードビハインドのコントロールは、あなたのaspxの< %%>タグ内のコードによって上書きされています。たとえば、あなたのC#コードでbutton.Enabled何でもあなたが設定は、このことによって、ページのライフサイクルの後半に上書きされます。

Enabled='<%#(!String.IsNullOrEmpty(Eval("MMM").ToString()) ? false : true)%>' 

私はあなたのaspxでこのようなすべてのコードが誰かによって書かれたと推測していますそうでなければ、あなたはこのプロジェクトで作業を始める前に?もしそうなら、最も簡単な解決策はおそらく、GridView1_RowDataBound関数を削除し、代わりに< %%>タグ内のコードを変更して、必要な振る舞いに変更することです。

私はあなたがそれをやろうとしている方法は、実際にはより正しいと言います。あなたが時間の贅沢を持っていて、既存のコードをリファクタリングするのを恐れていない場合は、代わりに< %%>タグ内のすべてのロジックをGridView1_RowDataBound関数に移動し、aspxから< %%>タグを削除することができますようにそれだけで次のようになります。もちろん

<asp:TemplateField HeaderText="MMM" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="ddl_Class_new"> 
<ItemTemplate> 
    <asp:HyperLink ID="MMM" runat="server"> 
    </asp:HyperLink> 
</ItemTemplate> 

、私が言ったように、あなたはまだ、私がここに表示するには困っていませんあなたのGridView1_RowDataBound機能、でその削除ロジックのすべてを再作成する必要があります。

関連する問題

 関連する問題