2009-12-17 6 views
-1

Dans un événement de clic sur un bouton, comment puis-je cocher toutes les cases dans gridview? Je n'ai pas besoin de case à cocher.Case à cocher dans gridview avec le bouton

S'il vous plaît fournir vos connaissances

attendant votre réponse ....

Merci

+0

quel C# ou VB? – TStamper

+0

ou javascript est également une option, car IMO je pense que ce serait mieux – TStamper

+5

Demander exactement la même question à nouveau ne vous mènera nulle part. Copie exacte - fermeture. – Oded

Répondre

1

Affectez une classe à toutes les cases à cocher de la ligne de grille et utilisez le script ci-dessous pour les obtenir toutes.

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; 
} 

Et vous avez l'appeler ainsi:

var messages = getElementsByClass("childbox"); 

affecter une classe childbox boîte enfant ligne de la grille.

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; 
} 
} 

vous assignez la classe parentbox à la case parent qui est en tête de la grille.

Vous n'êtes pas obligé de les définir - parentbox et childbox.

1

C# Disons que vous avez un chèque bouton Tout

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

et dans ce cas, cliquez sur vous feriez quelque chose comme:

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 approche:

<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> 

champ Checkbox comme si:

<asp:CheckBox ID="chkAll" runat="server" Text="SelectAll" 
onclick="javascript:SelectAllCheckboxes(this);" /> 
+0

juste une note: chk1 dans C# code est votre case à cocher Id – TStamper

+0

ya son fonctionnement lorsque la case à cocher est en dehors de la grille, mais à l'intérieur il ne fonctionne pas – Domnic

+0

lequel avez-vous utilisé? javascript ou C#? – TStamper

2
<input id="btncheckall" type="button" value="select all" /> 

ajouter gestionnaire d'événements click à bouton ci-dessus (avec jQuery)

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

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

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

    }); 

    }); 
</script> 

ou vous pouvez utilisez la case à cocher. ceci est une case à cocher en dehors gridview

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

ajouter gestionnaire d'événements change à case à cocher ci-dessus (avec jQuery)

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

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

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

    }); 

    }); 
</script> 
0

Si vous utilisez jquery vous pouvez utiliser le $ ('entrée: case') sélecteur donc quelque chose comme

<script type="text/javascript"> 
    $(function() { 
    $('#NameOfButtonToSelectAll').click(function() { 
     $('input:checkbox').each(function() { 
     this.checked = !this.checked; 
     }); 
    }); 
    }); 
</script> 
+0

j'ai besoin de javascript – Domnic

+0

comment puis-je appeler cette fonction dans le côté client – Domnic

1

Jquery peut rendre cela plus facile. Accrochez-vous dans l'événement onslected des boîtes externes, et à l'intérieur itérez les cases de la grille en les sélectionnant toutes. Ceci est un excellent exemple des maux d'asp.net et de la façon dont il est utilisé par de nouveaux développeurs qui les bloque en pensant que tout le traitement et l'interaction se font côté serveur, et toutes sortes de hacks fous ont lieu pour maintenir cette illusion . C'est en arrière et fou.

+0

im nouveau dans jquery pls expliquer ou donner une solution ... pouvons-nous le faire en utilisant javascript? – Domnic

+0

Jquery est construit sur JavaScript – Pierreten

1

Essayez ceci:

<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> 
+0

je n'ai pas utilisé le modèle d'en-tête en dehors de la grille? – Domnic

+0

Il est possible de mettre 'SelectUnSelectAllCheckBox' partout où vous voulez. –

+0

comment appeler ce script du côté client – Domnic

0

En utilisant jQuery:

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

Vous voulez probablement changer la sélecteurs, supposons Vous avez un cours pour votre grille et votre case à cocher.

+0

comment ca appelle cette fonction dans ma case à cocher id = "chk1" gridview checkbox id = "gridchk" – Domnic

+0

Vous aurez plus de facilité à travailler avec une CSSClass - ces identifiants sont modifiés du côté client.Vous pouvez probablement faire '$ (" [id $ = 'chk1'] ")', mais encore une fois, travailler avec une classe est plus simple. – Kobi

Questions connexes