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