2012-01-27 2 views
3

Как установить выбранное значение выпадающего списка, если выпадающий список находится в пределах Gridview и dropdownlist заселяется объектом objectatatource при нажатии кнопки EDIT ?C# selectedvalue выпадающего списка с ObjectDataSource

Что происходит с моим приложением, выпадающий список заполняется , но первый элемент всегда отображается как selectedvalue.

+0

найти DropDown в RowBoundEvent GridView и установить SeletedValue в раскрывающийся. Или вы можете использовать SelectedValue = 'EVAL ("ColumnName")' для привязки значения из DataSource от GridView. –

ответ

1

В данных строк зрения DataGrid связано событие это сделать

if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataRowView dRowView1 = (DataRowView)e.Row.DataItem; 
      if ((e.Row.RowState= DataControlRowState.Edit) > 0) 
      { 

       DropDownList YourdropDown = (DropDownList)e.Row.FindControl("YourdropDown") as DropDownList; 
       if (YourdropDown!=null){ 
       YourdropDown.SelectedValue = dRowView1["ID"].ToString(); 
       } 
      } 
     } 
1

Разметка:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="ObjectDataSource1" OnRowDataBound="GridView1_RowDataBound"> 
     <Columns> 
      <asp:CommandField ShowEditButton="True" /> 
      <asp:CommandField ShowSelectButton="True" /> 
      <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" /> 
      <asp:BoundField DataField="Firstname" HeaderText="Firstname" SortExpression="Firstname" /> 
      <asp:BoundField DataField="Lastname" HeaderText="Lastname" SortExpression="Lastname" /> 
      <asp:TemplateField HeaderText="Age"> 
        <ItemTemplate> 
         <%#Eval("Age") %> 
        </ItemTemplate> 
       <EditItemTemplate> 
        <asp:DropDownList runat="server" ID="ddlAge"> 
         <Items> 
          <asp:ListItem Text="10" Value="10"></asp:ListItem> 
          <asp:ListItem Text="20" Value="20"></asp:ListItem> 
          <asp:ListItem Text="30" Value="30"></asp:ListItem> 
          <asp:ListItem Text="40" Value="40"></asp:ListItem> 
          <asp:ListItem Text="50" Value="50"></asp:ListItem> 
          <asp:ListItem Text="60" Value="60"></asp:ListItem> 
          <asp:ListItem Text="70" Value="70"></asp:ListItem> 
          <asp:ListItem Text="80" Value="80"></asp:ListItem> 
          <asp:ListItem Text="90" Value="90"></asp:ListItem> 
         </Items> 
        </asp:DropDownList> 
       </EditItemTemplate> 
      </asp:TemplateField> 
     </Columns> 

    </asp:GridView> 
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAll" TypeName="OdsSelectedItem.App_Data.StudentsBll"></asp:ObjectDataSource> 

Код:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      Student item = e.Row.DataItem as Student; 
      if (item != null) 
      { 
       var ddl = e.Row.FindControl("ddlAge") as DropDownList; 
       if (ddl == null) return; 
       ddl.SelectedValue = item.Age.ToString(); 
      } 

     } 
    } 

плохой пример, но я думаю, что он показывает в правый направление:

0

У меня была аналогичная проблема только сегодня. моя проблема в том, что мне нужно привязать выбранное значение из списка имен к выпадающему списку. но мне пришлось передать «выбранное значение» в источник данных obj, чтобы заполнить выпадающий список.

Вы не можете привязать «selectedValue» и использовать его для передачи данных функции, которая будет заполнять это выпадающее меню.

Это мое решение:

   <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="ObjectDataSource1" DataTextField="Text" DataValueField="Value" ToolTip='<%#Eval("ID") %>' SelectedValue='<%# Bind("ManagerID") %>'> 
          </asp:DropDownList> 
          <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="getallIDs" TypeName="MyClass" OldValuesParameterFormatString="original_{0}"> 
           <SelectParameters> 
            <asp:ControlParameter ControlID="DropDownList1" Name="ID" PropertyName="ToolTip" Type="Int32" /> 
           </SelectParameters> 
          </asp:ObjectDataSource> 
Смежные вопросы