我真的很感激一些指导。这对你们中的一些人来说可能很简单,但我无法弄明白。 感谢您的任何意见。
要求
我有一个多标签控件。每个标签一个,我有一个自定义的reportviewer控件。
我在后面的代码“data-report-param”中为reportviewer添加了一个自定义属性。
我需要使用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)“&gt;
('ctl00_m_g_9d6a6c3c_11d0_4e03_bbd2_b907172c437d_ctl01_ReportViewer1_ctl04')。control.HideActiveDropDown();“data-report-param =”1068“interactivedeviceinfos =”(Collection)“&gt;
密钥是从后面的代码传递自定义数据属性,然后在$ .cache中以@popnoodles的形式访问它,并将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)
答案 0 :(得分:1)
getAttribute
只会为您提供生成或修改的HTML中的值不 DOM中的内容。数据方法从不更新HTML。
jQuery创建一个空对象$.cache
,用于存储通过数据方法设置的值。您向其添加数据的每个DOM元素都会分配一个唯一ID,该ID用作$.cache
对象中的键。
设置
$('#ReportViewer1').data('report-param', 1234);
获得
var id = $('#ReportViewer1').data('report-param');
答案 1 :(得分:1)
如果你可以使用jquery,为什么不只是:
$("#reportviewer1").data('report-param');