2014-11-15 2 views
0

Я проверил решение для этого, и найденные решения используют SqlDataSource, но я не заполняю его таким образом. У меня есть элементы, жестко закодированные в html, и сетка привязана к набору данных. Это мой первый раз, используя выпадающие списки в любом типе сетки, и я смущаюсь. Я попытался использовать ComboBoxColumn в шаблоне элемента, но имел серьезные проблемы с попыткой найти элемент управления combobox, поэтому я пошел с обычным asp: DropDownList. Поймите, что вам интересно, я даже не могу найти этот элемент управления без его возврата null.Как установить выбранное значение asp: dropdownlist в AspxGridView

Так как сетка заполняется, мне нужно установить выбранное значение выпадающих списков.

Разметка

<dx:ASPxGridView ID="xgvEdit" runat="server" Width="100%"> 
<Columns> 
    <dx:GridViewDataColumn FieldName="roleID" Caption="ID" Visible="false"></dx:GridViewDataColumn> 
    <dx:GridViewDataColumn FieldName="modulID" Caption="Document/UseCase (Right Object)"> 
     <Settings AutoFilterCondition="Contains" /> 
    </dx:GridViewDataColumn> 
    <dx:GridViewDataColumn FieldName="right_level" Caption="Right Level"> 
     <DataItemTemplate> 
      <asp:DropDownList ID="ddRightLevel" runat="server" AutoPostBack="false"> 
       <asp:ListItem Text="No Right" Value="0" /> 
       <asp:ListItem Text="Read" Value="1" /> 
       <asp:ListItem Text="Write" Value="2" /> 
       <asp:ListItem Text="Execute" Value="3" /> 
      </asp:DropDownList> 
     </DataItemTemplate> 
    </dx:GridViewDataColumn> 
    <dx:GridViewDataColumn FieldName="comments" Caption="Comments"> 
     <Settings AutoFilterCondition="Contains" /> 
    </dx:GridViewDataColumn> 
</Columns> 

+0

Вы пытаетесь найти эти элементы управления в клиентском сценарии или на стороне сервера на постбэка? – J0e3gan

+0

Я пытался найти их на стороне сервера в коде позади, я пробовал использовать FindControl, FindEditFormTemplateControl и до сих пор не кубиками. Вот почему у меня он настроен так, как я делаю – Chris

ответ

0

Я полагаю, что это обычай GridView, который наследует asp:GridView. Вам нужно добавить событие

OnRowDataBound="Grid_RowDataBound" 

в код:

protected void ProductGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.DataItem == null) 
      return; 


     DropDownList ddl= e.Row.FindControl("ddRightLevel") as DropDownList; 
     //do stuff 
    } 
+0

Я пробовал ваше предложение и всегда выбрал нулевое значение. Сетка - это вид сетки. Основная проблема заключается в установке выбранного значения в выпадающем списке из набора данных. – Chris

+0

@Chris Попробуйте ItemTemplate вместо DataItemTemplate – mybirthname

+0

И что должно заполнить выпадающие списки в строках сетки? – Chris

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

  • Нет связанных вопросов^_^