Member 12855310 Ответов: 1

Проблема обновления флажка из-за java-скрипта


У меня есть этот скрипт на стороне клиента, чтобы включить флажки по щелчку флажка в представлении сетки,но когда я нажимаю на submit outside gridview после chagning значения флажков, значение флажков не получает обновления.Он сохраняет свою прежнюю ценность.
$(function () {

   //Enable Disable TextBoxes in a Row when the Row CheckBox is checked.
   $("[id*=chkRow]").live("click", function () {

      //Find and reference the GridView.
      var grid = $(this).closest("table");

      //Find and reference the Header CheckBox.
      //var chkHeader = $("[id*=chkHeader]", grid);

      //If the CheckBox is Checked then enable the TextBoxes in thr Row.
      if (!$(this).is(":checked")) {
         var td = $("td", $(this).closest("tr"));
         //                td.css({ "background-color": "#FFF" });
         $("input[type=checkbox]", td).attr("disabled", "disabled");
      }
      else {
         var td = $("td", $(this).closest("tr"));
         //                td.css({ "background-color": "#D8EBF2" });
         $("input[type=checkbox]", td).removeAttr("disabled");
      }

      $("[id*=chkRow]").removeAttr("disabled");

   });

});
</script>


вот мой код
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   If Not Me.IsPostBack Then
      GetData()

   End If
End Sub
Private Sub GetData()
   Dim constr1 As String = ConfigurationManager.ConnectionStrings("constr1").ConnectionString
   Using con As New SqlConnection(constr1)
      Using cmd As New SqlCommand("select * from Test ")
         Using sda As New SqlDataAdapter()
            cmd.Connection = con
            sda.SelectCommand = cmd
            Using dt As New DataSet()
               sda.Fill(dt)
               GridView1.DataSource = dt
               GridView1.DataBind()
            End Using
         End Using
      End Using
   End Using
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
   For Each row As GridViewRow In GridView1.Rows
      If row.RowType = DataControlRowType.DataRow Then
         Dim C, L As CheckBox
         L = TryCast(row.Cells(3).FindControl("cbSelect7"), CheckBox)
         C = TryCast(row.Cells(4).FindControl("cbSelect8"), CheckBox)
         ' here C,L not taking updated value
      End If
   Next
End Sub


Что я уже пробовал:

я раскомментирую скрипт, и тогда он будет работать нормально.

1 Ответов

Рейтинг:
0

Richard Deeming

Отключенные элементы управления не отправляются на сервер при отправке формы. Это ограничение HTML, а не то, что вы можете изменить.

Вам нужно будет справиться с submit событие формы и повторно включите элементы управления перед отправкой формы.

$("form").submit(function(){
    $(this).find("input:checkbox:disabled").prop("disabled", false);
});


NB: .жить()[^] устарел с jQuery v1. 7; Вы должны использовать .на()[^] вместо:
$("table").on("click", "input:checkbox[id*=chkRow]", function () {
    ...
});

Кроме того, для таких свойств DOM, как disabled, вы должны использовать .подпирать()[^] вместо . аттр()[^]:
var me = $(this);
me.closest("tr").find("td input:checkbox").prop("disabled", !me.is(":checked"));
$("input:checkbox[id*=chkRow]").prop("disabled", false);


Member 12855310

предоставленное вами решение не работает.
я публикую свой html-код здесь



& lt;название>




//$("table"). live ("click", " input:checkbox[id*=chkRow]", функция () {
// var me = $(это);
// меня.ближайший("тр").найти("тд входной сигнал:флажок").опора("инвалид", !меня.это(":проверено"));
// $("input:checkbox[id*=chkRow]"). prop ("disabled", false);
//});

//$("table"). on ("click", " input:checkbox[id*=chkRow]", функция () {
// var me = $(это);
// меня.ближайший("тр").найти("тд"," вход:флажок").опора("инвалид", !меня.это(":проверено"));
// $("input:checkbox[id*=chkRow]"). prop ("disabled", false);

//});

//Включить отключить текстовые поля в строке, если установлен флажок строка.
$("[id*=chkRow]"). live ("click", функция () {

//Найти и справочные таблицы.
var grid = $(this). closest ("таблица");

// Найти и сослаться на флажок заголовка.
//var chkHeader = $("[id*=chkHeader]", сетка);

//Если флажок установлен, то включите текстовые поля в строке thr.
if (! $(this). is (": checked")) {
ООО " ТД " ВАР = $("тд", $(этот).ближайший("тр"));
// td. css ({"background-color": "#FFF" });
$("input[type=checkbox]", td). prop ("disabled", true);
}
ещё {
ООО " ТД " ВАР = $("тд", $(этот).ближайший("тр"));
// td. css ({"background-color": "#D8EBF2" });
$("input[type=checkbox]", td). prop ("disabled", false);
}

$("[id*=chkRow]"). prop ("disabled", false);

});










&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" AutoGenerateColumns="false" - в&ГТ;
& lt;колонки>
<%-- & lt;asp:templatefield HeaderText= "Select">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect" атрибут runat="сервер" autopostback элемента управления="Правда"и GT;

--%>

<asp:BoundField DataField=" Village_Code "HeaderText=" код деревни"
/>
<asp:BoundField DataField=" Village_Name "HeaderText=" название деревни"
/>
<asp:TemplateField HeaderText= "SELECT">
& lt;itemtemplate>
<asp: CheckBox ID=" chkRow "runat=" сервер"
/>



<asp:templatefield HeaderText= "BSNL">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect7" атрибут runat="сервер" включена="ложных" проверил=в'<%# Ивала("каталоге")%&ГТ; в' >



<asp:templatefield HeaderText= "AIRTEL">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect8" атрибут runat="сервер" включена="ложных" проверил=в'<%# Ивала("переключить")%&ГТ; в' >

< itemstyle font-size= "меньше" >



&ЛТ;кнопка АСП:кнопка ID="кнопка 1" атрибут runat="сервер" высота="50 пикселей" текст=""
Width= "106px" />

Member 12855310

после внесения изменений вы рекомендуете мой html код



& lt;название>






//Включить отключить текстовые поля в строке, если установлен флажок строка.
$("[id*=chkRow]"). live ("click", функция () {

//Найти и справочные таблицы.
var grid = $(this). closest ("таблица");

// Найти и сослаться на флажок заголовка.
//var chkHeader = $("[id*=chkHeader]", сетка);

//Если флажок установлен, то включите текстовые поля в строке thr.
if (! $(this). is (": checked")) {
ООО " ТД " ВАР = $("тд", $(этот).ближайший("тр"));
// td. css ({"background-color": "#FFF" });
$("input[type=checkbox]", td). prop ("disabled", true);
}
ещё {
ООО " ТД " ВАР = $("тд", $(этот).ближайший("тр"));
// td. css ({"background-color": "#D8EBF2" });
$("input[type=checkbox]", td). prop ("disabled", false);
}

$("[id*=chkRow]"). prop ("disabled", false);

});





$("form1"). submit(функция () {

$(этот).находим("ввод:флажок:отключено").опора("инвалид", ложные);

});








&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" AutoGenerateColumns="false" - в&ГТ;
& lt;колонки>
<%-- & lt;asp:templatefield HeaderText= "Select">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect" атрибут runat="сервер" autopostback элемента управления="Правда"и GT;

--%>

<asp:BoundField DataField=" Village_Code "HeaderText=" код деревни"
/>
<asp:BoundField DataField=" Village_Name "HeaderText=" название деревни"
/>
<asp:TemplateField HeaderText= "SELECT">
& lt;itemtemplate>
<asp: CheckBox ID=" chkRow "runat=" сервер"
/>



<asp:templatefield HeaderText= "BSNL">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect7" атрибут runat="сервер" включена="ложных" проверил=в'<%# Ивала("каталоге")%&ГТ; в' >



<asp:templatefield HeaderText= "AIRTEL">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="cbSelect8" атрибут runat="сервер" включена="ложных" проверил=в'<%# Ивала("переключить")%&ГТ; в' >

< itemstyle font-size= "меньше" >



&ЛТ;кнопка АСП:кнопка ID="кнопка 1" атрибут runat="сервер" высота="50 пикселей" текст=""
Width= "106px" />




//
вот на вместо живого не пишется и форма скрипта тоже не работает

Richard Deeming

"Не работает" не дает никакой информации о проблеме.

Откройте инструменты разработчика Вашего браузера и проверьте наличие ошибок. Отлаживать скрипты. Выяснить почему? это "не работает".

Member 12855310

я попробовал инструмент разработчика браузера.все еще здесь C, L не принимает обновленное значение ie, если C истинно при загрузке страницы, если я это сделаю false.it не будет принимать ложное значение