Как динамически загрузить выпадающий список в веб-форме Gridview? - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть шаблонное Gridview, в котором я хочу отобразить только один столбец (Вопросы - это база данных), а другой - раскрывающийся список возможных ответов (Параметры).Значения выпадающего списка меняются в зависимости от типа вопроса.Есть только 2 типа: T / F или дальний (Lo, Med, High).Так что, если вопрос типа 1, выпадающий список должен просто отображать T / F.Точно так же, если это тип II.

Ниже показан вид сетки и метод, который загружает выпадающий список (предположительно):

    <asp:GridView AutoGenerateColumns="false" runat="server" ID="SurveyView">
    <Columns>

        <asp:BoundField HeaderText="Questionnaire" DataField="Questionaire" ReadOnly="true"/>
        <asp:BoundField HeaderText="QuestionID" DataField="Id" ReadOnly="true" Visible="false" />
        <asp:BoundField HeaderText="IsBoolean" DataField="Filter" ReadOnly="true" Visible="false" />
        <asp:TemplateField HeaderText="Response">
            <ItemTemplate>
                <asp:DropDownList ID="UserDropDown" runat="server" AppendDataBoundItems="true" DataSource="LoadDropdownList(Filter)" DataTextField="key" DataValueField="value"></asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>


        public Dictionary<String, String> GenerateDropdownList(bool BooleanFilterStatus)
    {
        Dictionary<String, String> tempStores = new Dictionary<string, string>() ; 
        if (BooleanFilterStatus)
        {
            tempStores.Add(Boolean.TrueString, Boolean.TrueString);
            tempStores.Add(Boolean.FalseString, Boolean.FalseString);
        }
        else
        {
            tempStores.Add("NONE", "NIL");
            tempStores.Add("Lo", "Low");
            tempStores.Add("Medium", "Medium");
            tempStores.Add("High", "High"); 
        }

        return tempStores; 
    }

Я надеялся, что при использовании LoadDropdownList () он будет заполнять список.Но это не похоже на работу.

Будем благодарны за любые идеи или другие возможные решения.

1 Ответ

2 голосов
/ 16 февраля 2011

Как насчет чего-то вроде

<asp:DropDownList ID="UserDropDown" runat="server" AppendDataBoundItems="true" 
 ondatabinding="DropDownList1_DataBinding" DataTextField="key" DataValueField="value"></asp:DropDownList>

и с выделенным кодом

 protected void DropDownList1_DataBinding(object sender, EventArgs e)
    {
        var ddl = sender as DropDownList;
        if(ddl!=null)
        {
          //populate list. 
          ddl.Items.Add(new ListItem("test"));
        }
    }
...