回复

时间:2017-07-11 10:09:18

标签: jquery asp.net updatepanel

我有一个包含更新面板的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" />&nbsp&nbsp
                <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调用成功时被赋值,但值丢失。 我不知道为什么会这样。我因为更新面板而反弹控件。 更新后我们如何保留标签的价值。

0 个答案:

没有答案