Флажок в сетке с кнопкой - PullRequest
       17

Флажок в сетке с кнопкой

0 голосов
/ 17 декабря 2009

В событии нажатия кнопки, как я могу установить все флажки в gridview? Мне не нужен флажок заголовка.

Пожалуйста, предоставьте свои знания

в ожидании вашего ответа ....

Спасибо

Ответы [ 9 ]

2 голосов
/ 19 декабря 2009
<input id="btncheckall" type="button" value="select all" />

добавить click обработчик событий к кнопке выше (с jQuery)

<script type="text/javascript">
  $(function(){

    $("#btncheckall").click(function(){

      $("#gridview input:checkbox").attr("checked","checked");

    });

  });
</script>

или вы можете использовать флажок. это флажок вне gridview

<input id="checkall" type="checkbox" />

добавить change обработчик событий к флажку выше (с jQuery)

<script type="text/javascript">
  $(function(){

    $("#checkall").change(function(){

      $("#gridview input:checkbox").val( $(this).val() );

    });

  });
</script>
1 голос
/ 21 декабря 2009

Назначьте класс всем флажкам строки сетки и используйте скрипт ниже, чтобы получить их все.

function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
                classElements[j] = els[i];
                j++;
        }
    }
    return classElements;
}

И вы должны называть это так:

var messages = getElementsByClass("childbox");

Назначить класс childbox дочернему блоку строки сетки.

document.getElementById("parentbox").onclick  = function() {
for(var index=0; index < messages.length; index++) {
 // prompt the content of the div
 //message[index].checked = (message[index].checked) ? false : true;
}
}

вы назначите класс parentbox родительскому флажку, который находится в заголовке сетки.

Вам не нужно определять их - parentbox и childbox.

1 голос
/ 21 декабря 2009

Попробуйте это:

<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate><asp:CheckBox ID="SelectUnSelectAllCheckBox" runat="server" /></HeaderTemplate>
            <ItemTemplate><asp:CheckBox ID="SelectCheckBox" runat="server" /></ItemTemplate>
        </asp:TemplateField>
        <!-- Other columns are omitted -->
    </Columns>
</asp:GridView>

<script type="text/javascript">
    $(document).ready(function(e) {
        $("input[id$='SelectUnSelectAllCheckBox']").change(function() {
            $("input[id$='SelectCheckBox']").attr("checked", this.checked);
        });
    });
</script>
1 голос
/ 21 декабря 2009

Jquery может сделать это проще. Подцепите во внешнее поле onslected событие, и внутри там итерируйте поля сетки, выбирая их все

Это прекрасный пример зла asp.net и того, как его используют новые разработчики, действительно заставляет их думать, что вся обработка и взаимодействие происходит на стороне сервера, и для поддержания этой иллюзии происходят всевозможные сумасшедшие хаки Это задом наперед и безумие.

1 голос
/ 19 декабря 2009

Хай Доминик,
Если вы хотите JavaScript, посмотрите на это http://www.4guysfromrolla.com/articles/052406-1.aspx#postadlink

или Флажок в виде сетки с кнопкой

1 голос
/ 17 декабря 2009

C # Допустим, у вас есть кнопка проверки всех

<asp:CheckBox ID="chkSelectAll" runat="server" Text="SelectAll" 
AutoPostBack="true" OnCheckedChanged="chkSelectAll_CheckedChanged" />

и в этом событии клика вы сделаете что-то вроде:

protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)
{
   CheckBox chk;   //assuming your gridview id=GridView1

   foreach (GridViewRow rowItem in GridView1.Rows) 
  {   
     chk = (CheckBox)(rowItem.Cells[0].FindControl("chk1")); 
     chk.Checked =((CheckBox)sender).Checked;
   }
}

подход на основе JavaScript:

<script language="javascript">

function SelectAllCheckboxes(spanChk){

// Added as ASPX uses SPAN for checkbox
var oItem = spanChk.children;
var theBox= (spanChk.type=="checkbox") ? 
    spanChk : spanChk.children.item[0];
xState=theBox.checked;
elm=theBox.form.elements;

for(i=0;i<elm.length;i++)
  if(elm[i].type=="checkbox" && 
          elm[i].id!=theBox.id)
  {
    //elm[i].click();
   if(elm[i].checked!=xState)
     elm[i].click();
   //elm[i].checked=xState;
  }
 }
</script>

Поле флажка так:

<asp:CheckBox ID="chkAll" runat="server" Text="SelectAll" 
onclick="javascript:SelectAllCheckboxes(this);" />
0 голосов
/ 21 декабря 2009

Использование jQuery:

$('#SelectAll').click(function(){
  var checked = $(this).is(':checked');
  var allCheckboxes = $('table input:checkbox');
  if(checked)
      allCheckboxes.attr('checked','checked');
  else
      allCheckboxes.removeAttr('checked');
});

Возможно, вы захотите изменить селекторы, если у вас есть класс для вашей сетки и флажок.

0 голосов
/ 21 декабря 2009

Пожалуйста, проверьте это и дайте мне знать, когда у вас получится.

Использование Javascript:

http://wiki.asp.net/page.aspx/281/check-uncheck-checkboxes-in-gridview-using-javascript/

Использование серверного скрипта: (VB.Net)

http://aspnet.4guysfromrolla.com/articles/052406-1.aspx

0 голосов
/ 19 декабря 2009

Если вы используете jquery , вы можете использовать селектор $ ('input: checkbox'), например,

<script type="text/javascript">
  $(function() {
    $('#NameOfButtonToSelectAll').click( function() {
      $('input:checkbox').each( function() {
        this.checked = !this.checked;
      });
    });
  });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...