我在列表视图中获得了一个数据表。从列表视图中删除行根据列的值
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