2010-06-18 1 views
5

J'utilise une vue de liste à l'intérieur de laquelle dans le gabarit j'utilise une étiquette et une case à cocher. Je veux que chaque fois que l'utilisateur clique sur la case à cocher, la valeur doit être mise à jour dans une table.J'utilise un datakeys dans listview.on sur la base de la valeur de la clé de données doit être mis à jour dans la table. La requête est:Comment trouver la clé de données sur l'événement CheckedChanged de case à cocher dans ListView dans ASP.NET?

string updateQuery = "UPDATE [TABLE] SET [COLUMN] = " + Convert.ToInt32(chk.Checked) + " WHERE PK_ID =" + dataKey + " ";` 

aussi je veux un peu d'aide dans l'affichage du résultat car il est à l'intérieur des table.means si est 1, alors la case shoul vérifier la valeur de la colonne dans la table pour un PKID particulier.

Voici l'extrait de code:

<asp:ListView ID="lvFocusArea" runat="server" DataKeyNames="PK_ID" OnItemDataBound="lvFocusArea_ItemDataBound"> 
    <LayoutTemplate> 
     <table border="0" cellpadding="1" width="400px"> 
      <tr style="background-color: #E5E5FE"> 
       <th align="left"> 
        Focus Area 
       </th> 
       <th> 
        Is Current Focused 
       </th> 
      </tr> 
      <tr id="itemPlaceholder" runat="server"> 
      </tr> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <td width="80%"> 
       <asp:Label ID="lblFocusArea" runat="server" Text=""><%#Eval("FOCUS_AREA_NAME") %></asp:Label> 
      </td> 
      <td align="center" width="20%"> 
       <asp:CheckBox ID="chkFocusArea" runat="server" OnCheckedChanged="chkFocusArea_CheckedChanged" AutoPostBack="true" /> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <AlternatingItemTemplate> 
     <tr style="background-color: #EFEFEF"> 
      <td> 
       <asp:Label ID="lblFocusArea" runat="server" Text=""><%#Eval("FOCUS_AREA_NAME") %></asp:Label> 
      </td> 
      <td align="center"> 
       <asp:CheckBox ID="chkFocusArea" runat="server" OnCheckedChanged="chkFocusArea_CheckedChanged" AutoPostBack="true" /> 
      </td> 
     </tr> 
    </AlternatingItemTemplate> 
    <SelectedItemTemplate> 
     <td> 
      item selected 
     </td> 
    </SelectedItemTemplate> 
</asp:ListView> 

Aidez-moi.

+0

vérifier la réponse mise à jour –

+0

est-il obligatoire? – Subbu

+0

ce n'est pas obligatoire, vous devez accepter si cela fonctionne, sinon je vais supprimer ma réponse dans ce cas –

Répondre

4

Check this out: peut aider à résoudre votre problème de geting Datakey

protected void chkFocusArea_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox cb = (CheckBox)sender; 
    ListViewItem item = (ListViewItem)cb.NamingContainer; 
    ListViewDataItem dataItem = (ListViewDataItem)item ; 
    string code = ListView1.DataKeys[dataItem.DisplayIndex].Value.ToString(); 
} 
+0

J'utilise Visual Web Developer 2008 Express Edition, il n'y a pas un tel élément DisplayIndex est montrant dans itellisense. – Subbu

+0

use item.Index propriété –

+0

bro cette propriété n'est pas non plus disponible – Subbu

1

Utiliser l'expression de liaison de données

<asp:CheckBox ID="chkFocusArea" runat="server" Checked='<%# Eval("[COLUMN]") %>' oncheckedchanged="chkFocusArea_CheckedChanged" AutoPostBack="true" /> 

Dans votre gestionnaire d'événements chkFocusArea_CheckedChanged, effectuez votre base de données et l'insertion REBIND les données.

Questions connexes