我有一个模板化的Gridview,我只想显示一列(问题---这些是获得的数据库),另一个是可能答案的下拉列表(选项)。下拉列表的值会根据问题的类型而变化。只有两种类型:T / F或范围(Lo,Med,High)。因此,如果问题是类型1,则下拉列表应该只显示T / F.同样,如果它是II型。
下面显示的是gridview和加载下拉列表的方法(据说):
<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(),它将填充列表。但这似乎不起作用。
任何想法或其他可能的解决方案都将受到赞赏。
答案 0 :(得分:2)
像
这样的东西<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"));
}
}