在ASP.net中使用Jquery通过PostBack保持表隐藏

时间:2014-07-28 19:29:04

标签: javascript jquery asp.net

好的,所以已经触及了这一点点,但我想我很难将它们放在一起。我的问题是我有一些动态表,我已经为某些表生成了css类。我有使用jquery隐藏不同表的复选框...但是在回发时,我可以让它返回默认值而不是用户选择删除的内容。每次隐藏表格时,我都希望通过回发保持这种方式,如果可能的话,通过页面传输。什么是最好的方法呢?

  <input id="checkOne" type="checkbox" name="checkOne" checked="checked"/>One


 <table class="thisClass">
    <tr>
     <td>Some Info</td>
    </tr>
  </table>

jQuery的:

   $(document).ready(function () {
     $('#checkOne').click(function () {
        if ($(this).is(':checked')) {
            $('.thisClass').show();
        }
        else {
            $('.thisClass').hide();
        }
    });

2 个答案:

答案 0 :(得分:0)

您可以将表设置为runat =&#34; server&#34;并创建一些与每个表关联的隐藏字段。 因此,当您使用Javascript(或JQuery或...)隐藏表时,将关联的隐藏字段的值设置为1。 然后在每个回发的代码隐藏中,检查隐藏字段和每个值为1的字段,设置TableName.Visible = false。 对于页面传输,您应该使用数据库或cookie或会话,而不是隐藏字段,以保存表的可见性状态。

答案 1 :(得分:0)

感谢您的帮助和评论...这就是我们这样做的方式,如果有人有更好的方式来编写它,请随意留下一个脚本,因为我是jQuery的新手。请记住,这些表是动态生成的,所以我没有表格的html而不重写它,我现在没有时间。每个表都有一个生成的css类,具体取决于列中的标题。那里还有很多代码。

<script type="text/javascript">
    $(document).ready(function () {
        //when back button is pressed, make sure all the checkboxes are checked
        // var checkoxes = $('#check, #checkOne, #checkTwo, #checkThree, #checkFour, #onHold, #cancelled, #oPrep');

         //checkoxes.prop('checked', true);
        //Clicking the development link only displays development columns and checks only Dev box
        $('#developmentLink').change(function () {
            $('#checkOne').prop('checked', true);
            $('#check, #checkTwo, #checkThree, #checkFour, #cancelled').prop('checked', false);
            $('.developmentTwo').show();
            $('.developmentOne, .Released, .obsolete, .cancelled').hide();
        });
        //checkbox toggle features
        $("#check").change(function () {
            if ($(this).is(':checked')) {
                $('.developmentOne').show();
                document.cookie = "check=Checked; path=/";
            }
            else {
                $('.developmentOne').hide();
                $("#checkFour").prop('checked', false);
                document.cookie = "check=NotChecked";
            }
        });
        $('#checkOne').change(function () {
            if ($(this).is(':checked')) {
                $('.developmentTwo').show();
                $("#checkFour").prop('checked', false);
                document.cookie = "check1=Checked; path=/";

            }
            else {
                $('.developmentTwo').hide();
                $("#checkFour").prop('checked', false);
                document.cookie = "check1=NotChecked; path=/";
            }
        });
        $('#checkTwo').change(function () {
            if ($(this).is(':checked')) {

                $("#checkFour").prop('checked', false);
                $(".Released").show();
                document.cookie = "check2=Checked; path=/";

            }
            else {
                $(".Released").hide();
                $("#checkFour").prop('checked', false);
                document.cookie = "check2=NotChecked; path=/";
            }
        });
        $('#checkThree').change(function () {
            if ($(this).is(':checked')) {
                $('.obsolete').show();
                document.cookie = "check3=Checked; path=/";

            }
            else {
                $('.obsolete').hide();
                $("#checkFour").prop('checked', false);
                document.cookie = "check3=NotChecked; path=/";
            }
        });
        $('#checkFour').change(function () {
            if ($(this).is(':checked')) {
                $('.developmentOne, .developmentTwo, .Releaseed,.obsolete, .cancelled').show() &&
                $("#check").prop('checked', true);
                document.cookie = "check=Checked";
                $("#checkOne").prop('checked', true);
                document.cookie = "check1=Checked";
                $("#checkTwo").prop('checked', true)
                document.cookie = "check2=Checked";
                $("#checkThree").prop('checked', true);
                document.cookie = "check3=Checked";
                $("#checkFour").prop('checked', true);
                document.cookie = "check5=Checked";
                $("#cancelled").prop('checked', true);
                document.cookie = "check4=Checked";
            }
            else {
                $("#checkOne, #checkTwo, #checkThree, #check, #cancelled, #checkFour").prop('checked', false) &&
                $('.developmentOne, .developmentTwo, .Released, .obsolete, .cancelled').hide();
                document.cookie = "check=NotChecked";
                $("#checkOne").prop('checked', false);
                document.cookie = "check1=NotChecked";
                $("#checkTwo").prop('checked', false);
                document.cookie = "check2=NotChecked";
                $("#checkThree").prop('checked', false);
                document.cookie = "check3=NotChecked";
                $("#checkFour").prop('checked', false);
                document.cookie = "check5=NotChecked";
                $("#cancelled").prop('checked', false);
                document.cookie = "check4=NotChecked";   
            }

        });

        $('#cancelled').change(function () {
            if ($(this).is(':checked')) {
                $('.cancelled').show();
                document.cookie = "check4=Checked"
            }
            else {
                $('.cancelled').hide();
                $("#checkFour").prop('checked', false);
                document.cookie = "check4=NotChecked"
            }
        });
        $('#onHold').change(function () {
            if ($(this).is(':checked')) {
                $('.onHold').show();
                document.cookie = "check6=Checked"
            }
            else {
                $('.onHold').hide();
                document.cookie = "check6=NotChecked"
            }
        });
        $('#oPrep').change(function () {
            if ($(this).is(':checked')) {
                $('.moveToObsolescence').show();
                document.cookie = "check7=Checked";
            }
            else {
                $('.moveToObsolescence').hide();
                document.cookie = "check7=NotChecked";
            }
        });
        //if all checkboxes are checked except for the "All" checkbox, check "All" checkbox automatically
       $('#check, #checkOne, #checkTwo, #checkThree, #cancelled').change(function () {
            if ($('#check').is(':checked') && $('#checkOne').is(':checked') && $('#checkTwo').is(':checked') && $('#checkThree').is(':checked')
                 && $('#cancelled').is(':checked')) {
                $('#checkFour').prop('checked', true)
            }
        });

    });
    function startupChecks() {

            if (getCookie("check") == 'Checked') {
                $('#check').prop('checked', true) && $('.developmentOne').show();
            }
            else {
                $('#check').prop('checked', false) && $('.developmentOne').hide() && $("#checkFour").prop('checked', false);
            }
            if (getCookie("check1") == 'Checked') {
                $('#checkOne').prop('checked', true);
                $('.developmentTwo').show();
            }
            else {
                $('#checkOne').prop('checked', false) && $('.developmentTwo').hide() && $("#checkFour").prop('checked', false);
            }

            if (getCookie("check2") == 'Checked') {
                $('#checkTwo').prop('checked', true) && $('.Released').show();
            }
            else {
                $('#checkTwo').prop('checked', false) && $('.Released').hide() && $("#checkFour").prop('checked', false);
            }
            if (getCookie("check3") == 'Checked') {
                $('#checkThree').prop('checked', true) && $('.obsolete').show();
            }
            else {
                $('#checkThree').prop('checked', false) && $('.obsolete').hide() && $("#checkFour").prop('checked', false);
            }
            if (getCookie("check4") == 'Checked') {
                $('#cancelled').prop('checked', true) && $('.cancelled').show();
            }
            else {
                $('#cancelled').prop('checked', false) && $('.cancelled').hide() && $("#checkFour").prop('checked', false);
            }
            if (getCookie("check6") == 'Checked') {
                $('#onHold').prop('checked', true) && $('.onHold').show();
            }
            else {
                $('#onHold').prop('checked', false) && $('.onHold').hide();
            }
            if (getCookie("check7") == 'Checked') {
                $('#oPrep').prop('checked', true) && $('.moveToObsolescence').show();
            }
            else {
                $('#oPrep').prop('checked', false) && $('.moveToObsolescence').hide();
            }

        function getCookie(cname) {
            var name = cname + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') c = c.substring(1);
                if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
            }
            return "";
        }
    }

在Page_Load上,我们把这个小小的位置放在这里:

    Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "startupChecks()", true);

总而言之,一切都按预期工作,但我知道有一个更好的方式来写这个。再说一次,如果有人想拍它,我就是为了它。