ListView以编程方式在数据绑定后添加行

时间:2010-06-30 15:01:02

标签: asp.net

我想要实现的目标:

我希望用户能够在listview中插入一行。但不要进入数据库。

我被困在:

目前我被困在OnItemCommand上,我似乎没有进入该方法。任何帮助都将是下面的代码。

<LayoutTemplate>
    <table>
        <th>
        </th>
        <th class="grayHeader">
            <asp:Label ID="lblHeader" runat="server" />
        </th>
        <tr>
            <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
        </tr>
    </table>
</LayoutTemplate>
<ItemTemplate>
    <tr>
        <td>
            <asp:Button runat="server" ID="btnDeletePerson" Text="-"  CommandName="deletePerson"/>
        </td>
        <td>
            <asp:Label ID="lblPerson" runat="server" Text='<% #Eval("Person") %>'></asp:Label>
        </td>
    </tr>
</ItemTemplate>
<InsertItemTemplate>
    <tr>
        <td>
            <asp:Button ID="btnAddUser" runat="server" CommandName="Insert" ext="+" />
        </td>
        <td>
            <asp:TextBox runat="server" ID="txtInsert"></asp:TextBox>
        </td>
    </tr>
</InsertItemTemplate>




Protected Sub ListGrantee_OnItemCommand(ByVal sender As Object, ByVal e As ListViewCommandEventArgs)
    Select Case e.CommandName
        Case "Insert"
            Dim test As ListViewItem
            test = New ListViewItem("test")
            listGrantee.Items.Add(test)
        Case ""
        Case Else
    End Select
End Sub

3 个答案:

答案 0 :(得分:0)

我会保存你暂时创建的ListView数据源中标记为临时的用户(添加一个新的DataColumn)。之后你必须DataBind Listview。将标志存储在不可见的控件(标签)中,以便将其保存在Postbacks上的ViewState中。

答案 1 :(得分:0)

继续我的评论 - 我理解你的问题,你的OnItemCommand事件处理程序没有被触发。以下是我设置事件处理程序的方法(使用VS2008)。

在aspx文件的设计视图中,我突出显示我感兴趣的控件。然后,在“属性”窗口中,我单击事件的按钮(小闪电),然后向下滚动列表事件,直到我找到我感兴趣的那个。

双击事件名称旁边的列 - 这将显示页面后面的代码,其中包含事件处理程序的shell - 包括所有重要的“handle ....”子句。

现在输入您的事件处理代码....

答案 2 :(得分:0)

我关闭了viewstate。其中禁用了事件机制,翻转了视图状态,重新解决了问题。