Изменение данных с помощью EditItemTemplate ListView путем программной настройки его свойства DataSource и вызова его метода DataBind

C # или VB.NET меня устраивают.

У меня нет возможности использовать элемент управления источником данных для ListView. Все ListView связаны с данными из кода программной части. Итак, мне нужно вручную обрабатывать режим редактирования / обновления ListView.

Вот наценка:

<asp:ListView ID="lvList" runat="server" DataKeyNames="Id">
        <LayoutTemplate>
            <table id="TimeSheet" cellspacing="1" class="tablesorter">
                <thead>

                            <tr>
                                <th>
                                   Edit
                                </th>

                                <th>
                                    <a href="#">Ref. #</a>
                                </th>

                                <th>
                                    <a href="#">Category</a>
                                </th>


                            </tr>
                </thead>
                <tbody>
                    <tr id="itemPlaceholder" runat="server" />
                </tbody>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>

                <td>
                    <asp:LinkButton ID="lnkEdit" runat="server" ToolTip="Edit Category" CommandName="Edit">Edit</asp:LinkButton>
                </td>
                <td>
                <%#Eval("Id")%>
                </td>

                <td>
                    <%#HttpUtility.HtmlEncode(Eval("CategoryNameEN"))%>
                </td>


            </tr>
        </ItemTemplate>

<EditItemTemplate> 
      <p> 
         <b>Product Name:</b> 
         <asp:TextBox ID="txtCategoryEN" runat="server" Text='<%# Bind("CategoryNameEN") %>'></asp:TextBox> 
         <asp:RequiredFieldValidator ID="rfvCategoryName" ControlToValidate="txtCategoryEN" Display="Dynamic" 
                            runat="server" ErrorMessage="[Required]"></asp:RequiredFieldValidator> 
         <br /> 

      <p> 

          <asp:LinkButton ID="lnkUpdate" runat="server" ToolTip="Update Category" AlternateText="Update Category" CommandName="Update">Update</asp:LinkButton>         
          <asp:LinkButton ID="lnkCancel" runat="server" ToolTip="Cancel" AlternateText="Cancel" CausesValidation="false" CommandName="Cancel" >Cancel</asp:LinkButton>

      </p> 
   </EditItemTemplate> 

    </asp:ListView>

Вот код, стоящий за:

Protected Sub LoadListView()


    'GetGategory returns DataTable
    lvList.DataSource = GetCategory()
    lvList.DataBind()

End Sub

Protected Sub lvList_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles lvList.ItemCommand

    'handling update logic

End Sub

Когда я нажимал ссылку «Изменить» в ItemTemplate, чтобы перейти в режим редактирования, я всегда получаю сообщение об ошибке:

    > System.InvalidOperationException: The ListView 'lvList' raised event ItemEditing which wasn't handled.

Как включить режим редактирования в ListView, связанный с данными программно?

Спасибо.


person Narazana    schedule 22.02.2011    source источник


Ответы (2)


У Аарона есть ответ

Protected Sub lvList_ItemEditing(sender as Object, e As ListViewEditEventArgs)
    lvList.EditIndex = e.NewEditIndex
    lvList.DataSource = SomeData
    lvList.DataBind()
End Sub
person Tom    schedule 22.02.2011

В lvList_ItemCommand вы должны добавить код для выполнения на основе передаваемой itemCommand.

Вы добавили сюда код?

Protected Sub lvList_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles lvList.ItemCommand

    'handling update logic

End Sub

Если вы добавили код, это может быть ошибка ...

пожалуйста, проверьте

person Bhavik Goyal    schedule 22.02.2011
comment
Есть простой код, чтобы проверить, работает ли он. Response.Write (тест), но выдает то же сообщение об ошибке. - person Narazana; 22.02.2011