2013-03-19 2 views
2

У меня есть данные в виде списка.Удаление строк из баз данных списка по значению для столбца

ID TelcoName Reload Value (RM) Количество Всего (RM) 1 Maxis 5 1 5 Удалить 2 Digi 5 1 5 Удалить

Это в основном то, что моя таблица выглядит. Мой HTML-код это:

<asp:ListView ID="ListView1" runat="server" OnSorting="ListView1Sorting" OnItemCommand="ListView1_ItemCommand"> 
        <LayoutTemplate> 
          <table border="0" cellpadding="1"> 
           <tr style="background-color:#FFFFFF"> 
            <th align="center"><asp:Label ID="lblId" runat="server">Id &nbsp;</asp:Label></th> 
            <th align="center"><asp:Label ID="lblName" runat="server">TelcoName&nbsp;</asp:Label></th> 
            <th align="center"><asp:Label ID="lblReloadValue" runat="server">Reload Value(RM)&nbsp;</asp:Label></th> 
            <th align="center"><asp:Label ID="lblQuantity" runat="server">Quantity&nbsp;</asp:Label></th> 
            <th align="center"><asp:Label ID="lblTotal" runat="server">Total (RM)&nbsp;</asp:Label></th>          
            <th></th> 
           </tr> 
           <tr id="itemPlaceholder" runat="server"></tr> 
          </table> 
         </LayoutTemplate> 
         <ItemTemplate> 
         <tr> 
         <td align="center"><asp:Label runat="server" ID="lblId"><%#Eval("ID") %></asp:Label></td> 
         <td align="center"><asp:Label runat="server" ID="lblTelcoName"><%#Eval("TelcoName") %></asp:Label></td> 
         <td align="center"><asp:Label runat="server" ID="lblReloadValue"><%#Eval("ReloadValue")%></asp:Label></td> 
         <td align="center"><asp:Label runat="server" ID="lblQuantity"><%#Eval("Quantity")%></asp:Label></td> 
         <td align="center"><asp:Label runat="server" ID="lblTotal"><%#Eval("Total")%></asp:Label></td> 
         <td align="center"><asp:LinkButton ID="lnkDelete" runat="server" CommandName="Sort" CommandArgument="Delete">Delete</asp:LinkButton></td> 
         </tr> 
         </ItemTemplate> 
        </asp:ListView> 

Это мой позади код для удаления:

Protected Sub ListView1_ItemCommand (ByVal отправитель As Object, ByVal е Как ListViewCommandEventArgs) Если (e.CommandName) = «Сортировка "Затем Dim txteno As Label = DirectCast (e.Item.FindControl (" ID "), Label) Dim deleteecommand As String =" удалить из dt, где ID = "& Convert.ToInt32 (txteno.text) Сессия (" dt "). DeleteCommand = deletecommand End If End Sub

Моя проблема здесь в том, что я coud'nt получаю идентификатор строки, которую пользователь выбирает. «Идентификатор» - это имя первого столбца, но когда я запускаю веб-сайт, это утверждение ничего не возвращает.

дим txteno в качестве метки = DirectCast (e.Item.FindControl («ID»), этикетка)

Мой вопрос, как я получить значение столбца («ID»), чтобы использовать для удаления данные? я спрашиваю, а кто-то предлагает мне использовать e.item.DataItemIndex, но я не могу найти эту команду в любом месте. Любая идея, как это решить?

Это только что был добавлен

Dim дт как новый DataTable Dim я = 0 Dim ID As New DataColumn ("ID") dt.Columns.Add (ID) Dim TelcoName As New DataColumn ("TelcoName") dt.Columns.Add (TelcoName) Dim ReloadValue As New DataColumn ("ReloadValue") dt.Columns.Add (ReloadValue) Dim Количество As New DataColumn ("Количество") dt.Columns.Add (Количество) Dim Total As New DataColumn ("Total") dt.Columns.Add (Всего) ListView1.DataSource = дт ListView1.DataBind() Session («дт») = дт

После того, как я переплетены в ListView, мне нужно delcare имя для DataTable, так что я могу использовать его в качестве ссылка для оператора sql или я могу просто оставить его как dt и в sql-инструкции, когда я обращаюсь к dt, это относится к таблице в списке?

ответ

1

EDIT: Решение два вопроса отдельно - один является то, что ручка управления не может быть захвачена, другой вопрос вокруг удаления из DataTable

Control Reference

Если вы пытаетесь получить рукоятку на управление с помощью этого:

Dim txteno As Label = DirectCast(e.Item.FindControl("ID"), Label) 

Тогда я думаю, что контроль ID неверно, так как в разметке вы определили его как «lblId».Так что, возможно, попробовать:

Dim txteno As Label = DirectCast(e.Item.FindControl("lblId"), Label) 

Кроме того, я не уверен, какое влияние это будет иметь, но я дал бы контроль в LayoutTemplate (так что я предполагаю, что заголовок для вашего ListView) различных идентификаторов к элементам управления в вашем ItemTemplate, если только для обслуживания/чистоты, если ничего другого.

Ярлык также должен быть связан как:

<asp:Label id="lblId" runat="server" Text='<%# Eval("ID") %>'></asp:Label> 

так, что в коде-за текстом может быть восстановлен.

Удаление из DataTable

Основываясь на комментариях автора, данные DataTable является не из базы данных.

Поскольку вы не подключаетесь к базе данных, вам не нужно писать SQL для удаления элементов из DataTable.

Похоже, что вы храните DataTable в сеансе. А также, что вы полностью привязаны к коду. Таким образом, то, что вы могли бы сделать в вашем методе ItemCommand является:

  1. Итерация по таблице данных, чтобы найти элемент, который необходимо удалить
  2. Удалить элемент (можно проконсультироваться, например, this пост на форуме)
  3. Как только элемент был удален из DataTable, повторно привяжите его к списку. В качестве примера того, кто, кажется, был в аналогичной ситуации см this

HTH, Натан

+0

я делать, как вы предложили и переход от «ID» в «lblID», но им по-прежнему не в состоянии верните индекс строки, который мне нужен. То, что я получаю, просто пустое для lblID. Кто-то сказал мне, что это связано с тем, что DirectControl работает только с временем рендеринга в методе ListView_ItemDataBound. Могу ли я знать, что это значит? Я до сих пор не могу найти этот метод. –

+0

Привет, вы использовали «lblID» или «lblId» - он будет чувствителен к регистру. Я отвечу на ваши другие вопросы, насколько это возможно в отдельном комментарии .... – nkvu

+0

Re: e.Item.DataItemIndex, с какой версией .NET вы работаете? Если вы посмотрите на документ для [ListViewCommandEventArgs] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewcommandeventargs.item.aspx), он имеет свойство Item, которое имеет тип ListViewItem , Если вы посмотрите [здесь] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewitem.dataitemindex.aspx) в ListViewItem, свойство DataItemIndex доступно только в .NET 4 или 4.5 ... может быть, поэтому вы не можете найти метод? – nkvu

Смежные вопросы