2017-01-24 4 views
0

Es gibt eine Listview. Listenansichts-ID: myListView. Es gibt ein hiddenField in der Listenansicht (in itemTemplate) HiddenField ID: hfID. Es gibt ein Kontrollkästchen in der Listenansicht (in itemTemplate) Checkbox ID: checkBoxSec Und es gibt eine Schaltfläche aus der Listenansicht. Button ID: btnConfirmSelectedWählen Sie die Kontrollkästchen in der Listenansicht mit der Schaltfläche

Mein Zweck: Ich möchte Kontrollkästchen aktiviert bekommen, wenn ich diesen Asp-Button klicke.

Jetzt bin ich teilen aspx Seite zuerst und dann aspx.cs (Code hinter dieser Seite)

1-aspx Seite

<asp:ListView ID="myListView" runat="server" OnItemCommand="listView_OnItemCommand" 
    OnItemDataBound="listView_ItemDataBound"> 
    <LayoutTemplate> 
     <table id="listViewRecordsTable" cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered table-condensed"> 
      <thead> 
       <tr> 
        <th style="text-align: left;"> 
         <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="false" onchange="CheckAll(this);" /> 
        </th> 

        <th style="text-align: left;"> 
         süreç no 
        </th> 

       </tr> 
      </thead> 
      <tbody> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
      </tbody> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr class="odd gradeX" id="<%# Eval("ID").ToString() == "BOS" ? "" : Eval("ID")%>"> 
      <td> 
       <asp:CheckBox ID="checkBoxSec" runat="server" CssClass="checkBoxExample" /> 
      </td> 
      <td> 
       <%# Eval("surecID").ToString() == "BOS" ? "" : Eval("surecID")%> 
      </td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

2-aspx.cs Seite (Code-behind Seite)

protected void btnConfirmSelected_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     foreach (var item in myListView.Items) 
     { 
      if (item.ItemType == ListViewItemType.DataItem) 
      { 
       HiddenField hfID = item.FindControl("hfID") as HiddenField; 
       CheckBox checkBoxSec = item.FindControl("checkBoxSec") as CheckBox; 
       if (checkBoxSec.Checked) 
       { 
        //some tasks in here. i put debug point to here. and then i click button after i select some checkbox. but debug never comes here. 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     labelResult.Text = ex.ToString(); 
    } 
} 

Kann mir bitte jemand helfen; Wo ist der Fehler oder ein fehlender Teil? Ich habe Debug-Punkt hier:

if (checkBoxSec.Checked) 
{ 
    //some tasks in here. i put debug point to here. and then i click button after i select some checkbox. but debug never comes here. 
} 

aber nie hier kommt. aber ich klicke auf die Schaltfläche, nachdem ich ein Kontrollkästchen ausgewählt habe. Danke vielmals.

+0

Ihr Code funktioniert, ich habe es getestet. Setzen Sie Ihren Haltepunkt genau am Anfang des Knopfes klicken Sie nicht innerhalb 'if (checkBoxSec.Checked)' und verfolgen Sie, was dort vor sich geht. –

+0

kann ich bestätigen. Es funktioniert gut. Haben Sie die DataBinding-Funktion in 'if (! IsPostBack) {}' – VDWWD

+0

eingefügt? Versuchen Sie dieses Szenario bitte; Markieren Sie einige Kontrollkästchen in der Listenansicht und klicken Sie dann auf die Schaltfläche. Und setzen Sie 2 Debug-Punkte. Zuerst kann man am Anfang des Knopfes klicken und zweitens hier: 'if (checkBoxSec.Checked)' wenn du auf den Button klickst, wirst du sehen, dass der zweite Debug-Punkt nie kommt. es muss in diesem Umfang sein. weil wir bereits einige Checkboxen ausgewählt haben. Das ist das Problem. Der erste Debug-Punkt ist übrigens in Ordnung. Vielen Dank!! – selcuksel

Antwort

0

Ich habe nicht genug Reputation, um zu kommentieren, aber ich würde Ihnen empfehlen, auch Ihren Datenbindungscode zu posten.

Stellen Sie sicher, dass Sie myListView.DataBind() nicht auf POST aufrufen, da dies erklären würde, warum Sie nicht die Werte erhalten, die Sie von Ihren ASP.net-Steuerelementen erwarten.

+0

@selcuksel, werden Sie Ihre Page Load-Methode teilen Datenbindung aufgetreten ist? – Reego

+0

Sehr geehrte @Reego, ich habe festgestellt, dass ich nicht tun kann, was ich mit asp-Taste will. weil ASP-Button die Seite neu lädt, nachdem ich darauf geklickt habe. So verliere ich ausgewählte Kontrollkästchendetails. Deshalb denke ich, diese Frage zu löschen. Ich denke, ich brauche einen Javascript-Code. Dieser JScript-Code kann mit einer HTML-Schaltfläche ausgelöst werden. und es kann ausgewählte Checkboxen in der Listenansicht erkennen. und es kann ID-Werte des ausgewählten Kontrollkästchens in einer definierten Zeichenfolge beibehalten. Nehmen wir an, dass Listview mir 100 Datensätze zurückgibt. Nehmen wir an, ich habe drei ausgewählt. Nehmen wir an, die ID-Werte sind 4, 66, 72. also sollte dieses jscript mir diese Zeichenfolge zurückgeben: 4, 66, 72 – selcuksel

+0

Ich denke, es kann mit einem Knopf ausgelöst werden, der serverseitigen Code auslöst, wie Sie es zuerst getan haben. – Reego

Verwandte Themen