2013-11-21 7 views
2

Я добавил выпадающее окно моей GridView следующийASP.NET TemplateField редактируемые

<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

нормально, что проблема не в том, что мне не позволено ссылаться на ddlUpgrade в CodeBehind – Tsukasa

0

Если вы правильно поняли, вам захочется добавить EditItemTemplate в каждое поле Template. Так что если у вас есть ярлыки в других TemplateFields, это должно выглядеть что-то похожее на это ..

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. Затем, чтобы сделать их редактируемыми на клике «edit», щелкните смарт-тег, отредактируйте столбцы и добавьте CommandField. Поле Command уже имеет Cancel, Delete, Edit и т. Д. После того, как вы добавите это, вы сможете нажать кнопку «Изменить», теперь будет показано все, что имеет поле редактирования. Надеюсь это поможет!

Смежные вопросы