Как получить выбранное значение для выпадающего списка внутри gridview? - PullRequest
1 голос
/ 30 июня 2011

Сценарии

Я использую DataGrid со столбцом, содержащим DropDownList.Когда я обновляю значения, значение DropDownList не обновляется.

Мои исследования до сих пор

Я считаю, что для создания * 1014 нужен какой-то код C #* редактируемый.Я не знаю, где поставить код и как?Есть ли более короткий путь, чем код C #?

Большое спасибо

Редактировать: Поставляемый код

student_table: id, name, major, favourite_teacher

teacher_table: id, name

В виде таблицы есть источник данных ученика.У DropDownList есть источник данных учителя.

В сетке просмотра я сделал Favorites_teacher в качестве поля шаблона (DropDownList) и учительскую таблицу в качестве источника данных.В режиме редактирования DropDownList показывает правильных и заполняет учителей из таблицы учителей.Когда я выбираю любимого учителя для любого ученика и нажимаю кнопку «Отправить», отправка не проходит.Я мог бы нуждаться в некотором коде C # или иначе.Не знаю, как решить эту проблему.

Ответы [ 3 ]

1 голос
/ 17 апреля 2012

Пожалуйста, попробуйте следующий код и дайте мне знать, если он исправлен:

protected void btnClick_Click(object sender, EventArgs e)
{
    var tmpValue = ((DropDownList)gvRowItem.Cells[/*cellId*/].FindControl("/*dropDownListId*/")).SelectedValue;
}
0 голосов
/ 23 августа 2011

Я реализовал это из учебника здесь без написания кода на C #.

Вам не нужен код C #, хотя вы можете реализовать его и с помощью кода C #.

Есть трюк, который вы должны реализовать. Вам необходимо привязать значения gridview к источнику данных другой таблицы, из которой вы хотите извлечь данные. Но по замыслу, поскольку раскрывающийся список содержится в GridView, он может быть привязан только к полям gridview. Это главное осложнение.

Чтобы преодолеть это, включите эти дополнительные поля в сетку. Возможно, вам понадобится использовать оператор соединения, чтобы вы могли включить все поля, которые вам нужны, в gridview. Теперь вы можете легко связать эти поля с DropDownlist. Конечно, вам не нужно показывать эти дополнительные значения в GridView, они есть только для DropDownList. Это решит вашу проблему без написания ни единой строки кода.

0 голосов
/ 01 июля 2011

Вы можете попробовать следующий код

DataSourceID = "sds_teacher_table" относится к teacher_table.вид сетки будет ссылаться на student_table

            <asp:TemplateField HeaderText="Favourite Teacher" >
                <ItemTemplate>
                    <asp:Label ID="lblfavorite_teacher" runat="server" Text='<%# LookupTeacherName(DataBinder.Eval(Container.DataItem, "id")) %>'></asp:Label> 
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlfavorite_teacher" runat="server" DataSourceID="sds_teacher_table" DataTextField="name" DataValueField="id" SelectedValue='<%#Bind("id")%>' Width="98%">
                    </asp:DropDownList> 
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:DropDownList ID="ddlNewfavorite_teacher" runat="server" DataSourceID="sds_teacher_table" DataTextField="name" DataValueField="id" SelectedValue='<%#Bind("id")%>' Width="95%">
                    </asp:DropDownList> 
                </FooterTemplate>
               <ItemStyle Width="25%" /> 
           </asp:TemplateField>


    protected string LookupTeacherName(object idObj)
    {
        if (string.IsNullOrEmpty(idObj.ToString()))
            return null;

        string TeacherId = idObj.ToString();

        // find the corresponding name
        IEnumerator enumos = sds_teacher_table.Select(new DataSourceSelectArguments()).GetEnumerator();
        while (enumos.MoveNext())
        {
            DataRowView row = enumos.Current as DataRowView;

            if ((string)row["id"].ToString() == TeacherId)
                return string.Concat(row["name"].ToString());
        }

        return TeacherId;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...