How to find the data key on CheckedChanged event of checkbox in ListView in ASP.NET?

12,162

Solution 1

Check this out : may help to resolve your issue of 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();
}

Solution 2

Use Data Binding Expression

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

In your chkFocusArea_CheckedChanged event handler, perform your database insertion and rebind the data.

Share:
12,162
Subbu
Author by

Subbu

*Coldfusion web developer and application software progammer *

Updated on June 16, 2022

Comments

  • Subbu
    Subbu almost 2 years

    I am using a list view inside that in item template i am using a label and a checkbox. I want that whenever user clicks on the check box the value should be updated in a table.i am using a datakeys in listview.on the basis of datakey value should be updated in the table. Query is:

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

    also i want some help in displaying the result as it is inside the table.means if the value for column in table for a particular pkid is 1 then the checkbox shoul be checked.

    Here is the code snippet:

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

    Help me.