我有一个刚刚消失的文本框。当我在页面的任何地方添加另一个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>
答案 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”声明。应该只有一个。