2013-03-19 78 views
2

我在列表視圖中獲得了一個數據表。從列表視圖中刪除行根據列的值

ID TelcoName重載值(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> 

這是我後面的代碼刪除:

保護小組ListView1_ItemCommand(BYVAL發件人爲對象,BYVALË作爲ListViewCommandEventArgs) 如果(e.CommandName)=「排序「 Dim txteno As Label = DirectCast(e.Item.FindControl(」ID「),Label) Dim deletecommand As String =」Delete from dt where ID =「& Convert.ToInt32(txteno.text) Session(」 dt「)DeleteCommand = deletecommand End If End Sub

這裏我的問題是我沒有得到用戶選擇的行的ID。 「ID」是第一列的名稱,但是當我運行網站時,此聲明不返回任何內容。

昏暗txteno作爲標籤= DirectCast(e.Item.FindControl(「ID」),標籤)

我的問題是如何檢索列(「ID」)的值,以用於所述刪除數據?我問周圍有人建議我使用e.item.DataItemIndex,但我coudnt找到這個命令的任何地方。任何想法如何解決這個問題?

此剛剛添加

昏暗dt的作爲新的DataTable 昏暗I = 0 昏暗ID作爲新的DataColumn( 「ID」) dt.Columns.Add(ID) 昏暗TelcoName作爲新的DataColumn( 「TelcoName」) dt.Columns.Add(TelcoName) 昏暗ReloadValue作爲新的DataColumn( 「ReloadValue」) dt.Columns.Add(ReloadValue) 昏暗數量作爲新的DataColumn( 「數量」) dt.Columns.Add (Quantity) Dim Total As New DataColumn(「Total」) dt.Columns.Add(Total ) ListView1.DataSource = DT ListView1.DataBind() 會議(「DT」)= DT

之後我綁定到列表視圖,我需要爲數據表delcare一個名字,這樣我可以把它作爲對於sql語句的引用,或者我可以將它作爲dt和sql語句,當我引用dt時,它引用listview中的表?

回答

1

編輯:單獨解決兩個問題 - 一個是控制手柄不能被抓住,另一問題是圍繞從一個DataTable

控制參考

刪除如果你想獲得一個使用這種控制手柄:

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

那麼我想控制ID是不正確的在你的標記你已經將它定義爲「lblId」。因此,也許嘗試:

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

而且,我不知道它會產生什麼影響,但我想給控件的LayoutTemplate模板(所以我猜測你的ListView頭)不同的ID給控制在ItemTemplate,如果僅用於維護/清潔,如果沒有別的。

標籤也應約束,如:在

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

使代碼隱藏的文本可以被檢索到。

從數據表

根據海報上的評論刪除,數據表的數據不會從數據庫中來。

由於您沒有連接回數據庫,因此不必編寫SQL以從DataTable中刪除項目。

它看起來像你在會話中存儲DataTable。而且你也完全在代碼中綁定。因此,你可以在你的ItemCommand方法做的是:

  1. 遍歷數據表中找到要刪除的項目
  2. 刪除的項目(可以協商,例如,this論壇發帖)
  3. 從DataTable中刪除項目後,將其重新綁定到列表視圖。至於誰似乎已經在類似情況下的人的例子,請參閱this

HTH, 彌敦道

+0

我確實如你所說,並從「ID」到「lblID」但即時變化仍無法返回我需要的行索引。我收到的只是lblID的空白。有人告訴我,這是因爲DirectControl只適用於ListView_ItemDataBound方法中的渲染時間。我可以知道這是什麼意思嗎?順便提一下,我仍然找到了這個方法。 – 2013-03-19 03:14:39

+0

你好,你使用「lblID」還是「lblId」 - 它會區分大小寫。我會回覆你的其他問題,盡我所能在一個單獨的評論.... – nkvu 2013-03-19 03:28:17

+0

回覆:e.Item.DataItemIndex,您正在使用哪個版本的.NET?如果您查看[ListViewCommandEventArgs]的文檔(http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.listviewcommandeventargs.item.aspx),它有一個Item屬性,其中包含ListViewItem類型。如果您在ListViewItem處查找[此處](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.listviewitem.dataitemindex.aspx),則DataItemIndex屬性僅在.NET 4中可用或4.5 ...可能這就是爲什麼你找不到該方法? – nkvu 2013-03-19 03:32:03