0

私はaspnetフォームを持っていますが、jquery関数はロードされています:

<script type="text/javascript">
    $(document).ready(function () {
        var table = document.getElementById('<%=grdNews.ClientID%>');
        var tableDnD = new TableDnD();
        tableDnD.init(table);
    })
</script>

参考:これは私のコードではなく、TableDnDクラスを開発していません。このclssは、aspnet形式の1つのテーブルのドラッグアンドドロップ機能をアタッチします。

ここではすべてが正常に機能します。

ただし、新しい要件があります。一部のユーザーでは、このjqueryを実行する必要はありません。一部のユーザーでは、このjqueryは引き続き必要です。これをプログラムで達成するにはどうすればよいですか?これは次のようになります。

ON PAGE LOAD:
if (User == SpecificUser) 
{
     ALLOW_ABOVE_JQUERY (LOAD JQUERY FUNCTION ON LOAD) //?HOW
}
else 
{
     DO_NOT_ALLOW_ABOVE_JQUERY (DISABLE LOADING JQUERY FUNCTION ON LOAD) //?HOW
}

これはコードビハインドのjavascriptに関するものですが、これは$(document).readyであり、混乱を招きます。

4

2 に答える 2

3

マークアップでサーバータグを使用できます。

<% if (User == SpecificUser) { %>
<script type="text/javascript">
  $(document).ready(function () {
    var table = document.getElementById('<%=grdNews.ClientID%>');
    var tableDnD = new TableDnD();
    tableDnD.init(table);
  });
</script>
<% } %>

または、プレースホルダーに入れることもできます。

<asp:PlaceHolder ID="ScriptContainer" runat="server">
<script type="text/javascript">
  $(document).ready(function () {
    var table = document.getElementById('<%=grdNews.ClientID%>');
    var tableDnD = new TableDnD();
    tableDnD.init(table);
  });
</script>
</asp:PlaceHolder>

次に、コードビハインドからコンテンツを非表示にします。

if (User != SpecificUser) {
  ScriptContainer.Visible = false;
}
于 2012-08-22T07:55:19.983 に答える
1

javascript変数shouldDnDを作成し、サーバーにその値を設定するために必要なコードを追加し、後でその変数を使用してDnDをオンにするかどうかを決定できます。例えば:

<script type="text/javascript">
var shouldDnD = <%= User == SpecificUser %>
if (shouldDnD) {
    $(document).ready(function () {
        var table = document.getElementById('<%=grdNews.ClientID%>');
        var tableDnD = new TableDnD();
        tableDnD.init(table);
    })
}
</script>

コードの残りの部分がどのように見えるかに応じて、関数内でshouldDnDチェックを行うこともできます。

于 2012-08-22T08:03:12.127 に答える