ASP.NET的表格网格控件

时间:2010-01-08 15:54:53

标签: asp.net listview webforms

构建一个像ASP.NET中的Access表一样工作的控件的最佳方法是什么?

也就是说,我定义了3列。用户可以添加/编辑/删除行。它可以一次一行,这很好。表单上还有其他字段,与此表无关。当用户完成添加信息行时,他们点击“提交”,并在那个点,就是当我从控件中获取所有数据并保存到数据库(或xml文件或无论)。

我尝试使用ListView和/或GridView构建一些东西,我似乎无法获得我想要的行为。有什么想法或例子吗?

3 个答案:

答案 0 :(得分:2)

您可能想要查看jQuery的jqGrid

Demo here。我在网格操作方面看到的与行编辑有关,但对列不太确定。

相关SO Posts here

答案 1 :(得分:1)

在可能有用的链接上:

Using the New ListView Control in ASP.NET 3.5
来自自己项目的Eksample:

               <asp:ListView ID="lvList" runat="server" OnLayoutCreated="lvList_LayoutCreated" OnItemDataBound="lvList_OnItemDataBound">
                    <LayoutTemplate>
                        <table id="tblTest" class="lvtest" cellpadding="0" cellspacing="0">
                            <tr>
                                <th class="listheader">
                                    <asp:Label ID="lbl1" runat="server" />
                                </th>
                                <th class="listheader">
                                    <asp:Label ID="lbl2" runat="server" />
                                </th>
                            </tr>
                            <tr runat="server" id="itemPlaceholder" />
                        </table>
                    </LayoutTemplate>
                    <EmptyDataTemplate>
                        <tr>
                            <td colspan="2">
                                <asp:Label ID="lblNotFound" runat="server" OnInit="lblOnInit" />
                            </td>
                        </tr>
                    </EmptyDataTemplate>
                    <ItemTemplate>
                        <tr class="<%# Container.DataItemIndex % 2 == 0 ? "odd" : "even" %>">
                            <td class="listcell">
                                <asp:Literal ID="lit1" runat="server" />
                            </td>
                            <td class="listcell">
                                <asp:Literal ID="lit1" runat="server" />
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:ListView>

事件处理程序:

    protected void lvRist_LayoutCreated(object sender, EventArgs e)
    {
        SetHeaderValues();
    }


    //For the label when empty text
        protected void lblOnInit(object sender, EventArgs e)
    {
        SetEmptyText(sender);
    }



    protected void lvList_OnItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType != ListViewItemType.DataItem) return;

        SetDataItem(e);
    }

答案 2 :(得分:0)

我想我正在寻找的东西有点像黑客:

http://www.codeproject.com/KB/viewstate/retainingstate.aspx

但它似乎是我想要完成的最简单的方法。