时间:2009-09-04 14:54:52

标签: asp.net

我有一个刚刚消失的文本框。当我在页面的任何地方添加另一个templateField时,这个就会消失。任何人都知道可能会发生什么?

<asp:TemplateField HeaderText="Summary" SortExpression="summary">
             <ItemTemplate>
                <asp:Label ID="lblSummary" runat="server" Text='<%# Bind("summary") %>'></asp:Label>
             </ItemTemplate>

             <ItemTemplate>
                <asp:TextBox ID="txtSummary" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("summary") %>'></asp:TextBox>
             </ItemTemplate>

        </asp:TemplateField> 

2 个答案:

答案 0 :(得分:1)

<AnotherEdit>

我希望你不要犯这个错误,我的意思是没有冒犯,但似乎你错过了一些基本概念,需要一个好地方来学习它们。

请查看以下文章,以便您完全了解如何使用TemplateFields而不是普通的BoundField或Command字段。我想一旦你“得到”它,你的消失项目问题就会消失,因为你可以自己看到它。

http://www.asp.net/learn/data-access/tutorial-12-cs.aspx

</AnotherEdit>

您在TemplateField中不能有多个ItemTemplate。你可以拥有一个EditItemTemplate和一个ItemTemplate,但是......

编辑 - 已添加<​​/ em>

当您处于正常显示模式时,ItemTemplate会显示 EditItemTemplate显示您处于编辑模式的时间 当您处于插入模式时,InsertItemTemplate会显示。

对于GridView中的任何列(或FormView中的字段或DetailsView中的字段),只能有一个TemplateField。 在该TemplateField中,只能有一个ItemTemplate,一个EditItemTemplate和一个InsertItemTemplate(并非所有三个都是必需的,但建议所有三个 。)

如果您希望TextBox在正常的非编辑模式下显示在标签旁边,您可以将文本框放在现有的ItemTemplate中,如下所示:

    <ItemTemplate>                
        <asp:Label ID="lblSummary" runat="server" Text='<%# Bind("summary") %>'>
        </asp:Label>             
        <asp:TextBox ID="txtSummary" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("summary") %>'>
        </asp:TextBox>             
    </ItemTemplate>             

但是,标准是在读取模式下使用标签,在编辑或更新模式下使用文本框,如下所示:

 <asp:TemplateField HeaderText="Summary" SortExpression="summary">
    <ItemTemplate>                
        <asp:Label ID="lblSummary" runat="server" Text='<%# Bind("summary") %>'>
        </asp:Label>             
    </ItemTemplate>             
    <EditItemTemplate>                
        <asp:TextBox ID="txtSummary" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("summary") %>'>
        </asp:TextBox>             
    </EditItemTemplate>        
<InsertItemTemplate>                
        <asp:TextBox ID="txtSummary" TextMode="MultiLine" Width="500" Height="100" runat="server" Text='<%# Bind("summary") %>'>
        </asp:TextBox>             
    </InsertItemTemplate>        
 </asp:TemplateField>

答案 1 :(得分:1)

你有多个“ItemTemplate”声明。应该只有一个。