2011-09-11 8 views
0

このページには、データベースにバインドされたGridViewコントロールがあります。 GridViewには、挿入、削除、および更新用のコマンド行があります。問題は、データベーステーブルが最初は空のため、空のグリッドが表示されることです。私はそれに何かを挿入できるようにコマンド行を見ていません。
GridViewの行数を確認し、その表示をInsertTemplateに変更することで、これを解決できました。しかし、私はこれを行う標準的な方法があるかどうか、それはすでにそのような機能を持っている可能性がありますか?
DetailViewと同じ問題です。
ありがとうASP.NET空のGridViewとDetailViewの問題

答えて

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") 
    { 
    } 
} 
関連する問題