2013-11-21 79 views
2

我添加了一个下拉框我的GridView如下ASP.NET模板列编辑

<asp:TemplateField HeaderText="Upgrade"> 
    <ItemTemplate> 
     <asp:DropDownList ID="ddlUpgrade" runat="server" Width="100px"> 
      <asp:ListItem Value="1">1</asp:ListItem> 
      <asp:ListItem Value="2">2</asp:ListItem> 
      <asp:ListItem Value="3">3</asp:ListItem> 
      <asp:ListItem Value="4">4</asp:ListItem> 
      <asp:ListItem Value="4">5</asp:ListItem> 
      <asp:ListItem Value="5">6</asp:ListItem> 
     </asp:DropDownList> 
    </ItemTemplate> 
</asp:TemplateField> 

所有其他列是不可编辑的开始这是我想要的,但添加下拉框中使得它可编辑的,当它不该不会的。它应该只能编辑,当我点击控件编辑按钮

这里有什么窍门?

UPDATE

卡尔·安德森后的伎俩。

这样做的技巧,但现在当我尝试更新该行,在OnUpdating事件wherne我分配这些参数来从下拉列表中获取值时,他们总是反映第一个项目。任何想法?

回答

3

把下拉列表中<EditItemTemplate>代替<ItemTemplate>的,把一个Label控制在<ItemTemplate>,就像这样:

<asp:TemplateField HeaderText="Upgrade"> 
    <ItemTemplate> 
     <asp:Label ID="LabelUpgrade" runat="server" 
        Text='<%# Eval("Upgrade") %>' /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:DropDownList ID="ddlUpgrade" runat="server" Width="100px"> 
      <asp:ListItem Value="1">1</asp:ListItem> 
      <asp:ListItem Value="2">2</asp:ListItem> 
      <asp:ListItem Value="3">3</asp:ListItem> 
      <asp:ListItem Value="4">4</asp:ListItem> 
      <asp:ListItem Value="4">5</asp:ListItem> 
      <asp:ListItem Value="5">6</asp:ListItem> 
     </asp:DropDownList> 
    </EditItemTemplate> 
</asp:TemplateField> 

现在,当你第一次查看网格它将显示标签只显示在“编辑模式”下的下拉列表。

+0

这样做的技巧,但现在当我尝试更新该行,在OnUpdating事件wherne我分配这些参数来从下拉列表中获取值时,他们总是反映第一个项目。任何想法? – Tsukasa

+0

@Tsukasa - 我的猜测是,下拉列表被重新设置回第一个项目后回到服务器。我会建议专门针对这个新问题开始一个新问题。 –

+0

确定实际的问题是,它不让我在CodeBehind中引用ddlUpgrade – Tsukasa

0

如果我理解正确,您将要添加EditItemTemplate到每个模板字段。所以,如果你有其他的模板列标签,它应该类似于这种东西..

ASP

<asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="ID" Visible="False"> 
    <EditItemTemplate> 
      <asp:TextBox ID="tbTextBox runat="server" Text='<%# Bind("FromDatabase")%>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="lblALabel" runat="server" Text='<%# Bind("FromDatabase") %>'</asp:Label> 
     </ItemTemplate> 
</asp:TemplateField> 

但是,如果你想要的一切,可编辑从一开始走,那么你应该有ItemTemplate字段中的文本框。然后,通过“编辑”点击使它们可编辑,单击智能标记,编辑列,然后添加CommandField。命令字段已经有取消,删除,编辑等。添加完成后,您应该可以点击编辑,所有具有编辑字段的内容现在都会显示。希望这可以帮助!