2012-05-11 6 views
0

내 GridView는 거의 항상 데이터를 반환해야하는 SQL 데이터 연결에 대한 DataBound입니다. 그래서 EmptyDataTemplate을 사용하면 GridView가 결코 비어서는 안되기 때문에 도움이되지 않습니다. 하지만 사용자가 GridView에 새 정보를 추가 할 수 있도록 처음 몇 줄을 편집 할 수 있기를 바랍니다. 그래서 나는 Select 문을 만들어서 항상 빈 행 3 개를 반환했습니다. 그 행에 Label 대신 TextBox를 포함 시키길 원합니다. 그러나이 : ​​ASP.NET GridView 행이 비어있는 경우 TextBox 표시

<asp:GridView ID="GridView1" runat="server" 
     AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
     BorderColor="White" BorderStyle="Solid" 
     onselectedindexchanged="GridView1_SelectedIndexChanged" ShowFooter="False" 
     ViewStateMode="Disabled"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <input type="checkbox" id ="CheckBox1" class="checkbox" /> 
       </ItemTemplate> 
       <ItemStyle HorizontalAlign="Center" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Serial" SortExpression="Serial"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("Serial") %>'></asp:Label> 
       </ItemTemplate> 
       <ItemStyle HorizontalAlign="Center" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Model" SortExpression="Model"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Model") %>'></asp:Label> 
       </ItemTemplate> 
       <ItemStyle HorizontalAlign="Center" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="From Store"> 
       <ItemTemplate> 
        <asp:DropDownList ID="DropDownList1" runat="server" CssClass="dropdownlist" 
         DataSourceID="SqlDataSource2" DataTextField="Store" 
         SelectedValue='<%# Bind("Store") %>'> 
        </asp:DropDownList> 
       </ItemTemplate> 
       <ItemStyle HorizontalAlign="Center" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="To Store"> 
       <ItemTemplate> 
        <asp:DropDownList ID="DropDownList2" runat="server" CssClass="dropdownlist" 
         DataSourceID="SqlDataSource2" DataTextField="Store"> 
        </asp:DropDownList> 
       </ItemTemplate> 
       <ItemStyle HorizontalAlign="Center" /> 
      </asp:TemplateField> 
     </Columns> 
     <FooterStyle HorizontalAlign="Center" ForeColor="White" BorderColor="White" BorderStyle="Solid" /> 
     <HeaderStyle ForeColor="White" BorderColor="White" BorderStyle="Solid" /> 
     <RowStyle BorderColor="White" BorderStyle="Solid" ForeColor="White" />    
    </asp:GridView> 

이를 생성합니다 : 처음 3 개 행을 편집 할 레이블이 아닌 텍스트 상자를 enter image description here

합니다. 내가하고 싶은 일이 가능한가?

+0

편집 모드에서 3 행을 강제로 실행하면 Grid는 각 열의 레이블에 대한 텍스트 상자를 표시해야합니다. 확인 GridView1.EditIndex 속성 – rt2800

+0

감사. 나는 당신이 의미하는 것이 정말로 확실하지 않기 때문에 어떤 예나 링크를 가지고 있습니까? – jmease

답변

0

내 구체적인 목적을 달성하기 위해 필자는 텍스트 상자가있는 빈 행으로이 테이블과 별도의 테이블을 작성하기로했습니다. 그런 다음 JQuery를 사용하여 해당 테이블의 값을 DataGrid의 편집 할 수없는 행에 추가하는 버튼입니다. DataGrid에서 머리글 행을 제거하여 모두 동일한 테이블처럼 보입니다.

0

템플릿 필드에 <FooterTemplate></FooterTemplate>을 추가하면 그리드 뷰의 바닥 글 행이 새로운 행을 추가 할 수있는 장소가됩니다. 물론 <FooterTemplate> 안에 항목을 넣어야하지만, 내 작업과 동일한 작업을 할 것입니다. <ItemTemplate

+0

올바른 수정 행 하나만 추가됩니까? 나는 복수가 필요하다. – jmease

+0

수정 가능한 행 하나만 생성합니다. 그러나 맨 위에 세 개의 행이있는 방법은 다음과 같이 사용자 관점에서 혼란 스럽습니다. 1. 존재하는 데이터 (맨 아래 데이터)와 존재하지 않는 데이터 (세 개의 빈 행)를 혼합합니다. 2. 존재하지 않는 데이터에는 확인란이 있습니다. 아마도 존재하지 않는 항목 등을 선택했을 때 문제를 일으킬 수 있습니다. 한 행을 지정하면 유효성 검사기를 사용하는 경우 3 행 대신 1 행의 유효성 검사기 만 제어하면됩니다. 그냥 내 두 센트. – peroija

+0

나는 너와 함께하고 처음에는이 방법으로 바닥 글을 사용하는 것으로 간주했다. 하지만 내 사용자는 여러 항목을 추가해야 할 수도 있습니다. 따라서 FooterRow를 가져 와서 본질적으로 그것을 DataRow로 바꾸어 새 빈 편집 가능한 FooterRow를 사용할 수있게하는 것이 이상적 일 것입니다. 그러나 사용자가 입력 한 정보는 SqlDataSource에 즉시 삽입되거나 업데이트되지 않으므로이를 수행하기 위해 GridView를 다시 바인드 할 수 없습니다. – jmease

관련 문제