2

我在列表视图中有一个数据表。

ID TelcoName Reload Value(RM) 数量 Total(RM) 1 Maxis 5 1 5 Delete 2 Digi 5 1 5 Delete

这基本上就是我的桌子的样子。我的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 sender As Object, ByVal e As ListViewCommandEventArgs) If (e.CommandName) = "Sort" Then Dim txteno As Label = DirectCast(e.Item.FindControl("ID"), Label) Dim deletecommand As String = “从 dt 中删除 ID =” & Convert.ToInt32(txteno.text) Session(“dt”).DeleteCommand = deletecommand End If End Sub

我的问题是我无法获得用户选择的行的 ID。“ID”是第一列的名称,但是当我运行网站时,此语句不返回任何内容。

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

我的问题是如何检索用于删除数据的列(“Id”)的值?我四处打听,有人建议我使用 e.item.DataItemIndex 但我无法在任何地方找到此命令。知道如何解决这个问题吗?

这是刚刚添加的

Dim dt As New DataTable Dim i = 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 Quantity As New DataColumn("Quantity") dt.Columns.Add(Quantity) Dim Total As New DataColumn("Total") dt.Columns.Add(Total) ListView1 .DataSource = dt ListView1.DataBind() Session("dt") = dt

绑定到列表视图后,我是否需要删除数据表的名称,以便我可以将其用作 sql 语句的引用,或者我可以将其保留为 dt 并在 sql 语句中,当我引用 dt 时,它引用到列表视图中的表格?

4

1 回答 1

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 的标题)与 ItemTemplate 中的控件不同的 ID,如果只是为了维护/清洁,如果没有别的.

标签也应该像这样绑定:

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

这样就可以在代码隐藏中检索文本。

从数据表中删除

根据发帖者的评论,DataTable 的数据并非来自数据库。

由于您没有连接回数据库,因此您不必编写 SQL 来从 DataTable 中删除项目。

看起来您将 DataTable 存储在会话中。而且你完全在代码中绑定。因此,您可以在 ItemCommand 方法中执行的操作是:

  1. 遍历数据表以找到要删除的项目
  2. 删除项目(你可以参考,例如,这个论坛帖子)
  3. 从 DataTable 中删除项目后,将其重新绑定到列表视图。作为一个似乎处于类似情况的人的例子,请看这个

HTH,弥敦道

于 2013-03-19T03:04:02.213 回答