C # selectedvalue раскрывающегося списка с ObjectDataSource - PullRequest
3 голосов
/ 27 января 2012

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

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

Ответы [ 3 ]

1 голос
/ 09 мая 2013

Разметка:

<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();
            }

        }
    }

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

1 голос
/ 09 мая 2013

В событии привязки данных строки представления таблицы данных сделайте это

 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();
                 }
            }
         }
0 голосов
/ 01 июня 2015

У меня была похожая проблема только сегодня.моя проблема заключалась в том, что мне нужно привязать выбранное значение из списка имен к выпадающему.но мне пришлось передать «выбранное значение» источнику данных 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...