我有一个包含更新面板的aspx页面。内部更新面板我有一个转发器。我通过jquery访问转发器内的标签并为它们分配值。但是在分配之后,价值就会丢失。我的asp.net aspx页面是
<div class="row">
<div id="countdowntimer" class="text-center"><span id="timer"></span></div>
<asp:ScriptManager ID="scriptMgr" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="updpan" UpdateMode="Conditional">
<ContentTemplate>
<p class="text-right"><asp:Label runat="server" ID="lblMarksText" Text="Marks : "></asp:Label>
<asp:Label runat="server" ID="lblMarks" ></asp:Label>
</p>
<br /><br />
<asp:Repeater ID="rptQuestions" runat="server"
onitemcommand="rptQuestions_ItemCommand">
<ItemTemplate>
<div class="panel divrpt" id="divhead" runat="server"><br />
<asp:Label runat="server" ID="lblQno" Text='<%#Eval("Qno") %>'></asp:Label>
<asp:Label runat="server" ID="lblQuestion" Text='<%# Eval("Question") %>'></asp:Label>
<asp:Label runat="server" ID="lblqid" Text='<%# Eval("Qid") %>'></asp:Label>
<asp:Label runat="server" ID="lbltotal" Visible="false" ></asp:Label>
<asp:Label runat="server" ID="lblOnlyForJQueryQtype" Text='<%#Eval("Qtype")%>' />
<p class="text-right"><asp:Label class="text-success" runat="server" ID="lblRight" Visible="false"></asp:Label></p>
<%--</div>
<div class="panel" id="divbody" runat="server">--%>
<div id="Div1" runat="server" visible='<%# (Eval("Qtype").ToString() == "1") %>'>
<asp:Label runat="server" ID="lblAnsDesc" Text="Answer :"></asp:Label>
<asp:TextBox id="textans" runat="server" Rows="2" Columns="40"></asp:TextBox>
</div>
<div id="Div2" runat="server" visible='<%# (Eval("Qtype").ToString() == "2") %>'>
<asp:Label runat="server" ID="lblAnsMulti1" Text=" 1:"></asp:Label>
<asp:CheckBox runat="server" ID="chk1" />
<asp:Label runat="server" ID="lblch1" Text='<%# Eval("choice1") %>'></asp:Label><br />
<asp:Label runat="server" ID="lblAnsMulti2" Text=" 2:"></asp:Label>
<asp:CheckBox runat="server" ID="chk2" />
<asp:Label runat="server" ID="lblch2" Text='<%# Eval("choice2") %>'></asp:Label><br />
<asp:Label runat="server" ID="lblAnsMulti3" Text=" 3:"></asp:Label>
<asp:CheckBox runat="server" ID="chk3" />
<asp:Label runat="server" ID="lblch3" Text='<%# Eval("choice3") %>' ></asp:Label><br />
<asp:Label runat="server" ID="lblAnsMulti4" Text=" 4:"></asp:Label>
<asp:CheckBox runat="server" ID="chk4" />
<asp:Label runat="server" ID="lblch4" Text='<%# Eval("choice4") %>' ></asp:Label>
</div>
<div id="Div3" runat="server" visible='<%# (Eval("Qtype").ToString() == "3") %>'>
<asp:Label runat="server" ID="lbltf" Text="Choose True or False :"></asp:Label>
<asp:RadioButton runat="server" ID="rdtrue" Text=" True " GroupName="tf" />  
<asp:RadioButton runat="server" ID="rdfalse" Text=" False " GroupName="tf" />
</div>
<br />
<asp:Button class="btn btn-default" runat="server" ID="btnSubmit" Text="Submit" CommandArgument='<%#Eval("Qtype")%>' />
<hr />
</div>
</ItemTemplate>
</asp:Repeater>
我使用jquery为value分配了值。该代码如下
$(document).ready(function () {
$('.divrpt').find('[id*="lblqid"]').hide();
$('.divrpt').find('[id*="lblOnlyForJQueryQtype"]').hide();
});
绑定更新面板中的控件
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
$('.divrpt').find('[id*="lblqid"]').hide();
$('.divrpt').find('[id*="lblOnlyForJQueryQtype"]').hide();
$('[id*="btnSubmit"]').on("click", function () {
testAnswer();
});
$('[id*="btnNext"]').on("click", function () {
$('[id*="imageResult"]').hide();
});
});
和ajax调用检查值
function testAnswer() {
var qtype, qid;
var record="";
var ansDesc = null;
var tf, ch1, ch2, ch3, ch4;
qid = $('.divrpt').find('[id*="lblqid"]').text();
qtype = $('.divrpt').find('[id*="lblOnlyForJQueryQtype"]').text();
record += qid;
record += "," + qtype;
if (qtype == 1) {
ansDesc = $('.divrpt').find('[id*="textans"]').val();
record += "," + ansDesc;
}
else if (qtype == 3) {
tf = $('.divrpt').find('[id*="rdtrue"]').is(":checked");
record += "," + tf;
}
else if (qtype == 2) {
ch1 = $('.divrpt').find('[id*="chk1"]').prop("checked");
ch2 = $('.divrpt').find('[id*="chk2"]').prop("checked");
ch3 = $('.divrpt').find('[id*="chk3"]').prop("checked");
ch4 = $('.divrpt').find('[id*="chk4"]').prop("checked");
record += "," + ch1;
record += "," + ch2;
record += "," + ch3;
record += "," + ch4;
}
$.ajax({
type: "POST",
url: "StudentTest.aspx/answer",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({ parameter1: record }),
success: function (data) {
if (data.d == "correct") {
var mks = $('[id$="lblMarks"]').text();
var marks = ++mks;
$('[id$="lblMarks"]').text(marks);
alert($('[id$="ContentPlaceHolder1_lblMarks"]').text());
$('[id*="imageResult"]').show();
$('[id*="imageResult"]').html('<p class="text-center"><img src="img/correctAnswer.png" height="50px" width="50px" class="img-circle"/></p>');
}
else {
$('[id*="imageResult"]').show();
$('[id*="imageResult"]').html('<p class="text-center"><img src="img/wrongAnswer.jpg" height="50px" width="50px" class="img-circle" /></p>');
}
}
});
}
按钮点击事件如下
$('[id*="btnSubmit"]').on("click", function () {
testAnswer();
});
$('[id*="btnNext"]').on("click", function () {
$('[id*="imageResult"]').hide();
$('.divrpt').css("background", "white");
});
标签在ajax调用成功时被赋值,但值丢失。 我不知道为什么会这样。我因为更新面板而反弹控件。 更新后我们如何保留标签的价值。