Как найти ключ данных для события CheckedChanged флажка в ListView в ASP.NET? - PullRequest
5 голосов
/ 18 июня 2010

Я использую представление списка внутри, в шаблоне элемента я использую метку и флажок.Я хочу, чтобы всякий раз, когда пользователь нажимает на флажок, значение должно обновляться в таблице. Я использую datakeys в listview. На основании значения datakey следует обновлять в таблице.Запрос:

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

также мне нужна некоторая помощь в отображении результата, как он есть внутри table.means, если значение для столбца в таблице для определенного pkid равно 1, тогда флажок должен быть установлен.

Вот фрагмент кода:

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

Помогите мне.

Ответы [ 2 ]

4 голосов
/ 18 июня 2010

Проверьте это: может помочь решить проблему получения 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();
}
1 голос
/ 18 июня 2010

Использовать выражение привязки данных

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

В вашем обработчике событий chkFocusArea_CheckedChanged выполните вставку базы данных и перепривязайте данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...