2010-06-18 12 views
5

Estoy usando una vista de lista dentro de la plantilla de elementos. Estoy usando una etiqueta y una casilla de verificación. Quiero que cada vez que un usuario haga clic en la casilla de verificación, el valor se actualice en una tabla. Estoy usando una clave de datos en la lista. En base al valor de la clave de datos debería actualizarse en la tabla. Consulta es:¿Cómo encontrar la clave de datos en el evento CheckedChanged de casilla de verificación en ListView en ASP.NET?

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

también quiero un poco de ayuda en la visualización de los resultados, ya que se encuentra dentro de los table.means si el valor de la columna en la tabla para un PKID particular es 1, entonces la casilla de verificación shoul comprobarse.

Aquí es el fragmento de código:

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

Ayuda mí.

+0

la respuesta actualizada –

+0

¿Es obligatorio? – Subbu

+0

no es obligatorio, tiene que aceptar si funciona más bien, borraré mi respuesta en ese caso –

Respuesta

4

mira esto: puede ayudar a resolver el problema de la clave de datos que consigue cheque

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

estoy usando Visual developer 2008 edición expresa no existe tal elemento DisplayIndex se muestra en itellisense. – Subbu

+0

use item.Index property –

+0

bro Esta propiedad tampoco está disponible – Subbu

1

Uso de Datos expresión de enlace

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

En el controlador de eventos chkFocusArea_CheckedChanged, lleve a cabo su inserción base de datos y volver a enlazar los datos.

Cuestiones relacionadas