2012-05-11 30 views
0

我的GridView是DataBound到一個幾乎總是返回數據的SQL數據連接。因此,使用EmptyDataTemplate並不能幫助我,因爲GridView不應該是空的。但我希望前幾行可以編輯,以便用戶可以向GridView添加新信息。所以我製作了我的Select語句,總是返回3個空行。我希望這些行包含文本框而不是標籤。但這:ASP.NET GridView如果行爲空,則顯示文本框

<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> 

產生以下: enter image description here

凡第3行具有不可編輯的標籤,而不是文本框。我想做什麼?

+0

如果您始終以編輯模式強制這三行,則網格應顯示相應列中標籤的文本框。檢查GridView1.EditIndex屬性 – rt2800

+0

謝謝。你有沒有任何例子或鏈接,因爲我真的不知道你的意思? – jmease

回答

0

因此,爲了達到我的特定目的,我決定創建一個與此不同的表格,其中包含帶有文本框的空行。然後,使用JQuery從該表中獲取值的按鈕將它們附加到DataGrid中的不可編輯的行中。從DataGrid中刪除標題行,使它看起來像是同一張表。

0

在您的模板字段中添加<FooterTemplate></FooterTemplate>這會使您的gridview的頁腳行成爲您可以添加新行的位置。當然,您需要將物品放入<FooterTemplate>,但工作與<ItemTemplate相同。

+0

這隻會添加一個可編輯的行,但正確嗎?我需要多個。 – jmease

+0

它只會創建一個可編輯的行,請更正。然而,您在頂部有三行的方法會像用戶一樣混淆視圖:1.混合現有數據(底層數據)和不存在的數據(三個空行)2.不存在的數據具有複選框,這會可能會導致問題,當他們嘗試對那些選定的不存在的項目執行操作時等等。另外,有一行意味着您只需要控制一行驗證程序而不是三個(如果您使用驗證程序)。只是我的兩分錢。 – peroija

+0

我和你在一起,首先考慮以這種方式使用頁腳。但是我的用戶可能需要添加多個項目。因此,如果有一種方法讓我採用FooterRow,並將其填充到一個DataRow中,以便新的空白和可編輯的FooterRow變得可用,那將是理想的。但由於用戶輸入的信息不會立即在SqlDataSource中插入或更新,因此我無法重新綁定GridView來完成此操作。 – jmease

相關問題