ASP.NET空GridView& DetailView问题

时间:2011-09-11 07:37:26

标签: asp.net gridview

我的这个页面里面有一个绑定到数据库的GridView控件。 GridView有一个用于插入,删除和更新的命令行。问题是,由于我的数据库表最初是空的,我看到一个空网格。我甚至没有看到命令行,以便能够在其中插入任何内容 我设法通过检查GridView行计数并将其显示更改为InsertTemplate来解决此问题。但我想知道是否有一种标准的方法可以做到这一点,它可能已经具备了这样的功能吗? DetailView也存在同样的问题 感谢

1 个答案:

答案 0 :(得分:1)

如果网格的数据源最初为空,您可以使用EmptyDataTemplate处理插入新项目。

在ASPX中定义您的网格,如下所示:

<asp:GridView runat="server" ID="grid" AutoGenerateColumns="false" 
     OnRowCommand="grid_RowCommand">
    <Columns>
        <asp:ButtonField ButtonType="Link" CommandName="Add" Text="Add" />
        <asp:BoundField DataField="Id" HeaderText="Id" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name" />
    </Columns>
    <EmptyDataTemplate>
        <asp:TextBox ID="CustomerFirstName" runat="server"></asp:TextBox><br />
        <asp:TextBox ID="CustomerLastName" runat="server"></asp:TextBox><br />
        <asp:Button ID="Save" Text="Save" runat="server" CommandName="EmptyAdd" 
            UseSubmitBehavior="False" />
    </EmptyDataTemplate>
</asp:GridView>

Customer对象的集合用作网格的数据源。

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

将网格绑定到数据源(此示例为空)。

protected void Page_Load(object sender, EventArgs e)
{
   var customers = new List<Customer> {};
    grid.DataSource = customers;
    grid.DataBind();
}

然后,您可以在grid_RowCommand事件处理程序中处理Add和EmptyAdd命令。

protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "EmptyInsert")
    {
    }
    if (e.CommandName == "Insert")
    {
    }
}