C# 如何为每个gridview行定义javascript数组?

C# 如何为每个gridview行定义javascript数组?,c#,javascript,asp.net,arrays,gridview,C#,Javascript,Asp.net,Arrays,Gridview,我有一个gridview,我想使用javascript数组将每个gridview行的用户权限传递给客户端,我在gridview行数据绑定事件中为此编写了以下代码: permissions+= "var permissions = ["; lbtnSendToApprove.Enabled = CheckPermission(document, project, user, null, eProjectAdminPermission.EditDocument);

我有一个gridview,我想使用javascript数组将每个gridview行的用户权限传递给客户端,我在gridview行数据绑定事件中为此编写了以下代码:

permissions+= "var permissions = ["; 
lbtnSendToApprove.Enabled = CheckPermission(document, project, user, null, eProjectAdminPermission.EditDocument);
                if (!lbtnSendToApprove.Enabled)
                {
                    lbtnSendToApprove.OnClientClick = string.Empty;
                    permissions += "Base64.encode('0' ) ,";
                }
                else
                    permissions += "Base64.encode('1' ) ,";

                lbtnReleaseDocument.Enabled = true;
                permissions += "Base64.encode('1' ) ,";

                lbtnAddSubversion.Enabled = CheckPermission(document, project, user, null, eProjectAdminPermission.EditDocument);
                if (!lbtnAddSubversion.Enabled)
                {
                    lbtnAddSubversion.OnClientClick = string.Empty;
                    permissions += "Base64.encode('0' ) ,";
                }
                else
                    permissions += "Base64.encode('1' ) ,";

                bool attachmentPermission = CheckPermission(document, project, user, null, eProjectAdminPermission.DetermineAttachment);
                if (!attachmentPermission)
                {
                    permissions += "Base64.encode('0' ) ];";
                }
                else
                    permissions += "Base64.encode('1' ) ];";
ScriptManager.RegisterClientScriptBlock(e.Row, e.Row.GetType(), "ContextMenuPermission", permissions , true);

但是这段代码只保留最后一行的值。我怎么能让每行都有这个数组呢?如何基于gridview行索引读取此数组?

您可以尝试从数据源获取用户权限,这比尝试从gridview获取权限更容易,然后向客户发送相同的RegisterClient ScriptBlock

或者,您可以使用应用于gridview的相同客户端选择器样式,假设您可以调用gridview的用户可以使用jquery执行此操作

$ ('# users input tr [id ^ = permission]') 
有了它,就会得到gridview的所有行,你可以用for循环进行操作


使用数据集的数据源是什么?

好的,我用以下方法解决问题:

首先,我在javascript中定义了一个数组:一个二维数组:

var permissions=[];
然后我将rowDataBound代码更改为:

permissions += "permissions.push(["; 
lbtnSendToApprove.Enabled = CheckPermission(document, project, user, null, eProjectAdminPermission.EditDocument);
                if (!lbtnSendToApprove.Enabled)
                {
                    lbtnSendToApprove.OnClientClick = string.Empty;
                    permissions += "Base64.encode('0' ) ,";
                }
                else
                    permissions += "Base64.encode('1' ) ,";

                lbtnReleaseDocument.Enabled = true;
                permissions += "Base64.encode('1' ) ,";

                lbtnAddSubversion.Enabled = CheckPermission(document, project, user, null, eProjectAdminPermission.EditDocument);
                if (!lbtnAddSubversion.Enabled)
                {
                    lbtnAddSubversion.OnClientClick = string.Empty;
                    permissions += "Base64.encode('0' ) ,";
                }
                else
                    permissions += "Base64.encode('1' ) ,";

                bool attachmentPermission = CheckPermission(document, project, user, null, eProjectAdminPermission.DetermineAttachment);
                if (!attachmentPermission)
                {
                    permissions += "Base64.encode('0' ) ]);";
                }
                else
                    permissions += "Base64.encode('1' ) ]);";
ScriptManager.RegisterStartupScript(upDocuments, upDocuments.GetType(),"ContextMenuPermission"+e.Row.RowIndex.ToString(), permissions , true);//set permissions 
实际上,我为所有行添加了行权限的数组。 现在我可以根据gridview的rowIndex获得每一行权限。例如,权限[0]是指第一行权限