0

我正在使用 GridView 从数据源获取数据。我想在 GridView 的每一列的末尾添加一个文本框,即在页脚处我该怎么做?

4

3 回答 3

0

您应该了解 BoundField 和 TemplateField 类之间的区别。第一个用于将字段显示为文本,而在 TemplateField 中,您可以自定义显示信息的方式。因此,您应该在一列中使用 BoundFieldTemplateField(而不是像我认为您正在尝试的那样嵌套在另一个列中),在您的情况下它必须是 TemplateField,因为您想要自定义页脚的显示方式。所以,它应该是这样的:

<asp:TemplateField>
    <ItemTemplate>
       <asp:Label ID="lblNumber" runat="server" Text='<%# Bind("Number")%>' />
    </ItemTemplate>
    <FooterTemplate>
        <asp:TextBox ID="txb" runat="server"></asp:TextBox>
    </FooterTemplate>
</asp:TemplateField>
于 2012-04-15T04:28:48.007 回答
0

使用FooterTemplate. 例子:

<asp:TemplateField>
    <ItemTemplate>
        ...
    </ItemTemplate>
    <FooterTemplate>
        your textboxes go here
    </FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
    <ItemTemplate>
        ...
    </ItemTemplate>
    <FooterTemplate>
        your textboxes go here
    </FooterTemplate>
</asp:TemplateField>
于 2012-04-15T00:50:16.153 回答
0

在中添加文本框<FooterTemplate>

<asp:TemplateField HeaderText="UnitsInStock">
         <ItemTemplate>
            //your displaying control
         </ItemTemplate>                  
         <FooterTemplate>
              <asp:TextBox id="tb1" Text="Text" runat="server" />
         </FooterTemplate>
      </asp:TemplateField>

在 OnRowDataBound 事件中查找页脚控件:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.Footer)
   {
       TextBox tb1 = (TextBox)e.Row.FindControl("tb1");
       //do your stuff 
   } 
} 
于 2012-04-15T04:33:07.783 回答