我在列表視圖中獲得了一個數據表。從列表視圖中刪除行根據列的值
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 </asp:Label></th>
<th align="center"><asp:Label ID="lblName" runat="server">TelcoName </asp:Label></th>
<th align="center"><asp:Label ID="lblReloadValue" runat="server">Reload Value(RM) </asp:Label></th>
<th align="center"><asp:Label ID="lblQuantity" runat="server">Quantity </asp:Label></th>
<th align="center"><asp:Label ID="lblTotal" runat="server">Total (RM) </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中的表?
我確實如你所說,並從「ID」到「lblID」但即時變化仍無法返回我需要的行索引。我收到的只是lblID的空白。有人告訴我,這是因爲DirectControl只適用於ListView_ItemDataBound方法中的渲染時間。我可以知道這是什麼意思嗎?順便提一下,我仍然找到了這個方法。 – 2013-03-19 03:14:39
你好,你使用「lblID」還是「lblId」 - 它會區分大小寫。我會回覆你的其他問題,盡我所能在一個單獨的評論.... – nkvu 2013-03-19 03:28:17
回覆: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