0

DBから取得したDataTableがあり、コードビハインドで2D配列を作成し(DataTableを取得したら..)、それを2D配列としてJavascriptに渡します。

これは私がコーディングしようとしたものです:

int[,] videoQarray = new int[dt_questionVideo.Rows.Count,dt_questionVideo.Columns.Count ];
        string[,] videoQarrayTitle = new string[dt_questionVideo.Rows.Count, dt_questionVideo.Columns.Count ];

        for (var i = 0; i < dt_questionVideo.Rows.Count ; i++)
        {
            for (int j = 0; j < dt_questionVideo.Columns.Count; j++)
            {

                videoQarray[i,j] = Convert.ToInt32(dt_questionVideo.Rows[i][0]);
                videoQarrayTitle[i,j] = dt_questionVideo.Rows[i][1].ToString();   
            }
        }

        string createArrayScript = string.Format("var videQarray = [{0}];", string.Join(",", videoQarray));
        createArrayScript += string.Format("var videQarrayList = [{0}];", string.Join(",", videoQarrayTitle));

        Page.ClientScript.RegisterStartupScript(this.GetType(), "registerVideoQArray", createArrayScript, true);

さて、ブラウザコンソールでは、videoQarrayが定義されていないと表示されます。どうすればそれを適切に行うことができるのでしょうか。

4

2 に答える 2

1

おそらく、変数は関数内で定義されているため、コードの他の部分では隠されています。「var」の代わりに「window.videoQArray」を試してください:

string createArrayScript = string.Format("window.videQarray = [{0}];", string.Join(",", videoQarray));
createArrayScript += string.Format("window.videQarrayList = [{0}];", string.Join(",", videoQarrayTitle));

編集:それは2次元配列です(わかりました、質問でそれを非常に明確に書きましたが、私にはわかりませんでした)。使用JavaScriptSerializer:

var serializer = new JavaScriptSerializer();
string createArrayScript = string.Format("window.videQarray = {0};", serializer.Serialize(videoQarray));
createArrayScript += string.Format("window.videQarrayList = {0};", serializer.Serialize(videoQarrayTitle));
于 2012-08-10T21:00:35.090 に答える
0

次の機能を使用します。

 public static string ArrayToString2D(string[,] arr)
    {
        StringBuilder str = new StringBuilder();
        str.Append("[['");
        for (int k = 0; k < arr.GetLength(0); k++)
        {
            for (int l = 0; l < arr.GetLength(1); l++)
            {
                if (arr[k, l] == null)
                    str.Append("','");
                else
                    str.Append(arr[k, l].ToString() + "','");
            }
            str.Remove(str.Length - 2, 2);
            str.Append("],['");
        }
        str.Remove(str.Length - 4, 4);
        str.Append("]]");
        return str.ToString();
    }

コードビハインドには、次のプロパティがあります。

private string[,] upperLabels ;
    public string UpperLabel
    {
        get
        { return Utils.ArrayToString2D(upperLabels); }
    }

JavaScript では、次を使用します。

var upperSplitted = <%=UpperLabel%> ;
var value = upperSplitted[0][0];
于 2015-08-06T08:44:14.787 に答える