2015-04-14 2 views
1

Я хотел бы добавить специальный ряд в нижней части <asp:GridView>. Шаблон этой строки отличается от строк выше. Как я могу это сделать?Как добавить специальную строку в `<asp: GridView>`?

enter image description here

+0

Можете ли вы поделиться с нами, что вы пробовали до сих пор? – Izzy

+0

@lzzy, В настоящее время я просто использовал текстовые поля и кнопки управления вне gridview. Интересно, могу ли я переместить эти элементы управления в gridview, чтобы он выглядел более интегрированным. – Moon

+0

Да, вы можете это достичь. Посмотрите [здесь] (https://csaspnetgridview.codeplex.com/), он должен дать вам хорошую идею – Izzy

ответ

2

Вы можете использовать шаблон колонтитула, если вы всегда хотите, чтобы «добавить» ряд, чтобы быть в нижней части таблицы:

<asp:TemplateField> 
    <HeaderTemplate> 
    </HeaderTemplate> 
    <ItemTemplate> 
    </ItemTemplate> 
    <FooterTemplate> 

    </FooterTemplate> 
</asp:TemplateField> 
2

Благодаря @Alan и @lzzy. Я сделал это, используя <FooterTemplate>.

<!-- ASPX --> 
<asp:GridView ID="UserGridView" runat="server" AutoGenerateColumns="False" ShowHeaderWhenEmpty="True" OnRowDeleting="UserGridView_OnRowDeleting" 
      OnRowCommand="UserGridView_OnRowCommand" ShowFooter="true"> 
      <Columns> 
       <asp:TemplateField HeaderText="Username" ItemStyle-Width="70"> 
        <ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate> 
        <FooterTemplate> 
         <asp:TextBox runat="server" ID="NewUsername"></asp:TextBox> 
        </FooterTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Gender" ItemStyle-Width="70"> 
        <ItemTemplate><asp:Label ID="Gender" runat="server" Text='<%# Bind("Gender") %>'/></ItemTemplate> 
        <FooterTemplate> 
         <asp:DropDownList ID="NewGender" runat="server" > 
          <asp:ListItem>Male</asp:ListItem> 
          <asp:ListItem>Female</asp:ListItem> 
         </asp:DropDownList> 
        </FooterTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Button runat="server" Text="Delete" CommandName="Delete"/> 
        </ItemTemplate> 
        <FooterTemplate> 
         <asp:Button ID="AddUserButton" runat="server" Text="Add" CommandName="Add"/> 
        </FooterTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

// CSS 
protected void UserGridView_OnRowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Add") 
    { 
     TextBox newUsername = (TextBox) UserGridView.FooterRow.FindControl("NewUsername"); 
     DropDownList newGender = (DropDownList)UserGridView.FooterRow.FindControl("NewGender"); 
     AddUser(newGender.SelectedValue, newUsername.Text); 
     BindUserData(); 
    } 
} 

protected void UserGridView_OnRowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    string username = e.Values["Username"].ToString(); 
    string gender = e.Values["Gender"].ToString(); 
    DeleteUser(gender, username); 
    BindUserData(); 
} 

Некоторые другие проблемы я встретил по пути и ключи к ним. В случае, если кто-то в них нуждается.


Как связать данные с <asp:Label>?
Использование <%# Bind("DataFieldName") %>.

Пример:

<ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate> 

Почему не футер показ?
ShowFooter="true"<asp:GridView>.


Как получить ссылку на элементы управления в сноске?
Пример:

TextBox newUsername = (TextBox)UserGridView.FooterRow.FindControl("NewUsername"); 

Как связать AddUserButton в качестве кнопки по умолчанию?
Пример:

MainForm.DefaultButton = UserGridView.FooterRow.FindControl("AddUserButton").UniqueID; 
Смежные вопросы