2011-09-11 4 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> 

모음 그리드에 대한 데이터 소스로 사용됩니다.

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 이벤트 처리기에서 추가 및 EmptyAdd 명령을 처리 할 수 ​​있습니다.

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