-1
<script type="text/javascript">
function CheckData(e) {

                var form = e.form;
                var dataItem = e.dataItem;

                var r = <%=Session["count"] %>;
                var s = [];
                var t = [];

                for (i=1;i<r;i++)
                {
                    s.push(<%=Session["level"+i] %>;

                }
                for(i=1;i<r;i++)
                {
                    t.push(<%=Session["level"+i+"val"] %>
                }

                if(e.mode="edit")
                {

                }
            }
    </script>

JavaScriptでセッションを変数に結合しようとしましたが、セッションに動的セッションがあり、ビルドしようとするとこのコードでエラーが発生します。

4

2 に答える 2

4

いいえ。サーバー上に という名前の変数がある場合を除きますi。そのループを完全にサーバーに配置する必要があります。何かのようなもの:

List<int> s = new List<int>();
for (int i = 0; i < r; i++)
{
    s.Add((int)Session["level" + i]);
}

次に、クライアント コードで次のようにします。

var s = [<%= string.Join(",", s) %>];
于 2012-10-01T03:07:00.797 に答える
0

これを試して:

<%
System.Text.StringBuilder sJscriptArray = new StringBuilder();
System.Text.StringBuilder sJscriptVals = new StringBuilder();
for (int i = 0; i < Convert.ToInt32(Session["count"]); i++)
{
    if (sJscriptArray.Length > 0)
    {
        sJscriptArray.Append(", ");
        sJscriptVals.Append(", ");
    }
    sJscriptArray.Append(Session[String.Concat("level", i)]);
    sJscriptVals.Append(Session[String.Concat("level", i, "val")]);

}
%>

<script type="text/javascript">
function CheckData(e) {
    var form = e.form;
    var dataItem = e.dataItem;

    var s = [ <%= sJscriptArray.ToString() %> ];
    var t = [ <%= sJscriptVals.ToString() %>];
    var r = s.length;

    if(e.mode="edit")
    {

    }
}
</script>
于 2012-10-01T03:26:26.177 に答える