繁体   English   中英

访问Webpart的多个实例的HTML5自定义数据属性

[英]Accessing HTML5 Custom Data Attributes for multiple instances of webpart

我真的很感谢一些指导。 这对你们中的某些人可能很简单,但我无法弄清楚。 感谢您的任何投入。

要求

我有一个多选项卡的控件。 每个选项卡都有一个自定义reportviewer控件。

我在名为“ data-report-param”的代码中向报表查看器添加了一个自定义属性。

我需要使用javascript访问客户端当前标签上的自定义属性“ data-report-param”的值。

我尝试了几种方法,包括以下方法, 但无法获得在DOM中创建的值。

我的密码

//Attempt 1
var reportparamattribute = $('#ReportViewer1');
var reportparametervalue = reportparamattribute.getAttribute('data-report-param');

//Attempt 2
var reportparamattribute = document.getElementById('<%= ReportViewer1.ClientID %>');
var reportparametervalue = reportparamattribute.getAttribute('data-report-param');

//Also tried accessing the dataset
var reportparametervalue = reportparamattribute.dataset.report-param;

DOM中产生的内容 ('ctl00_m_g_66e41117_8ff5_4650_bf4d_7a4a25e326f3_ctl01_ReportViewer1_ctl04')。control.HideActiveDropDown();“ data-report-param =” 1068“ Interactivedeviceinfos =”(Collection)“>

('ctl00_m_g_9d6a6c3c_11d0_4e03_bbd2_b907172c437d_ctl01_ReportViewer1_ctl04')。control.HideActiveDropDown();“ data-report-param =” 1068“ Interactivedeviceinfos =”(Collection)“>

更新-下面的工作代码

关键是从后面的代码传递自定义数据属性,然后按如下所示的@popnoodles在$ .cache中访问它,并将reportviewer的clientID传递到javascript函数中,以获取webpart子控件的当前实例。

<input type="hidden" id="<%= ASP_SSRS.ClientID %>_myDataState" 
onchange="compareUnitValues(this.id, this.parentNode.id, '<%= ReportViewer1.ClientID %>',  '<%= ASP_SSRS.ClientID %>', '<%= btnSendHiddenField.ClientID %>');" />

<script type ="text/javascript">
function compareUnitValues(elemt, parent, reportviewerID, value1, value2) {
  var myDataUnit = $("#" + elemt),
     parentObject = $("#" + parent),
     reportviewerObject = $("#" + reportviewerID),
     ssrs    = $("#" + value1),
     btnSend = $("#" + value2);

  var myDataUnitValue = myDataUnit.val();
  var myDataUnitJSON = jQuery.parseJSON(myDataUnitValue);
  var currentmyDataUnit = myDataUnitJSON.currentUnit.objectId;
  var sessioncurrentObjectId = document.getElementById('<%= hiddenCurrentObjectId.ClientID %>').value;
  ssrs.val(myDataUnitValue);
  var currentReportViewerParam = $("#" + reportviewerID).attr("data-report-param");

  if (currentmyDataUnit != currentReportViewerParam) {
  btnSend.trigger("click");
  }    

}

从代码后面创建自定义数据属性

ReportViewer1.Attributes.Add("data-report-param", parsedObjectId)

getAttribute仅会为您提供生成或修改的HTML中的值,而不是 DOM中的值。 数据方法从不更新HTML。

jQuery创建一个空对象$.cache ,该对象用于存储通过data方法设置的值。 您向数据添加的每个DOM元素都分配了一个唯一ID,该ID用作$.cache对象中的键。

设置

$('#ReportViewer1').data('report-param', 1234);

入门

var id = $('#ReportViewer1').data('report-param');

如果可以使用jquery,为什么不这样做:

$("#reportviewer1").data('report-param');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM