2010-12-09 4 views
0

J'ai créé un gridview avec une case à cocher devant certaines colonnes. J'ai besoin de saisir les données que l'utilisateur est en train de supprimer et de construire un fichier XML.ASP.NET Gridview - Case à cocher - Sélectionner plusieurs lignes et obtenir des enregistrements

Je n'arrive pas à comprendre. Quelqu'un peut-il m'aider s'il vous plaît en C#.

Voici mon code jusqu'à présent.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataSourceID="ObjectDataSource1" AllowPaging="True" BackColor="#DEBA84" BorderColor="#DEBA84" 
BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" > 
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> 

<Columns>  

<asp:TemplateField> 
<HeaderStyle HorizontalAlign="left" /> 
<HeaderTemplate> 
<asp:CheckBox ID="chkSelectAll" ToolTip="Click here to select/deselect all rows" 
runat="server" /> 
</HeaderTemplate> 
<ItemTemplate> 
<asp:CheckBox ID="chkSelect" runat="server" /> 
</ItemTemplate> 
</asp:TemplateField> 

<asp:TemplateField HeaderText="Service Point"> 
<ItemTemplate>     
<%# Eval("SERVICEPOINTID")%> 
</ItemTemplate> 
<HeaderStyle HorizontalAlign="Left" /> 
<ItemStyle HorizontalAlign="Left" /> 
</asp:TemplateField> 

<asp:TemplateField HeaderText="Start Date"> 
<ItemTemplate> 
<%# Eval("STARTTIME")%> 
</ItemTemplate>     
</asp:TemplateField> 

Merci,

Steve

+0

Pouvez-vous poster le code-behind que vous avez essayé jusqu'à présent? –

+0

Je ne l'ai pas posté parce que je suis sûr que c'est faux et que ça ne marche pas. GridView1_RowDataBound protected void (object sender, GridViewRowEventArgs e) { // Vérifier une ligne de données si (e.Row.RowType == DataControlRowType.DataRow) {// Trouver le contrôle de case à cocher par ID et le paramétrer. ((CheckBox) e.Row.FindControl ("chkSelect")). Checked = IsItemChecked (((DataRowView) e.Row.DataItem) [0]); } } – Steve

+0

Cet article peut vous aider - [Vérification de toutes les cases à cocher dans un GridView à l'aide de jQuery] (http://www.4guysfromrolla.com/articles/120810-1.aspx) – Lareau

Répondre

1

Vous pouvez utiliser ci-dessous le code pour obtenir des valeurs une par une pour les lignes cochées.

foreach (GridViewRow rowItem in GridView1.Rows) 
    { 
    var chk = (CheckBox)(rowItem.Cells[0].FindControl("chkSelectAll")); 

    // chk.checked will access the checkbox state on button click event 
    if (chk.Checked) 
    { 
     //get required values here 
    } 
    } 
0
ForEach(GridViewRow row in MyGridView.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) //avoid header/footer rows. 
    { 
    var myCheckBox = (CheckBox)row.FindControl("chkSelect"); 
    //myCheckBox.Checked tells you if it's checked or not, yay! 
    var myPrimaryKey = (GuidOrIntOrSomething)MyGridView.DataKeys[row.RowIndex].Value; 
    //now you have your Key and the checkbox for whether the user has checked it 
    //and you can do your update/insert/delete/whatever against the DB. 
    } 
} 

et vous devriez vraiment traiter le javascript nécessaire pour vérifier atroce toutes les cases directement en utilisant votre chèque tout. Il est très contre-intuitif et frustrant pour les utilisateurs d'obtenir une publication quand ils cliquent sur celui-ci.

Questions connexes