我的asp:DropDownList
中有一个asp:GridView
,以帮助用户将数据上传到SQL Server 2012
。
<asp:TemplateField ItemStyle-Width = "100px" HeaderText = "Site">
<ItemTemplate>
<asp:Label ID="lblSiteID" runat="server" Text='<%# Eval("SiteID")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlSite" SelectedValue='<%# Bind("SiteID") %>' Text='<%# Bind("SiteID") %>' runat="server">
<asp:ListItem Value= "1" Text="Google" />
<asp:ListItem Value= "2" Text="Yahoo" />
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlSite" runat="server">
<asp:ListItem>Google</asp:ListItem>
<asp:ListItem>Yahoo</asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
SiteID
是数据库中的一个int,它是如何在代码隐藏中定义的:
private int numGoogle = 1;
private int numYahoo = 2;
//on insert and update
string SiteID = ((DropDownList)gvMainView.FooterRow.FindControl("ddlSite")).Text;
switch (SiteID)
{
case "Inpatient Measures":
SiteID = numGoogle.ToString();
break;
case "Outpatient Measures":
SiteID = numYahoo.ToString();
break;
}
//on Edit
switch (SiteID)
{
string SiteID = ((DropDownList)gvMainView.FooterRow.FindControl("ddlSite")).SelectedValue;
case "1":
SiteID = "Google";
break;
case "2":
SiteID = "Yahoo";
break;
}
我的目标是使此应用程序完全动态化,以便客户端可以将value
和文本本身添加到asp:dropdownlist
。我已经在我的数据库中为此创建了一个表。我知道如何查询数据库以获取num
和SiteName
,并将其用作value
和text
。我需要知道如何填充asp:DropDownList
一旦我拥有它们,以便变量不像现在那样硬编码。
答案 0 :(得分:2)
您可以设置下拉列表DataSource
属性,然后调用DataBind();
将控件绑定到该数据。
确保提供DataValueField
和DataTextField
,以便控件知道每个列表项的文本和值属性使用的内容,例如:
ddlSite.DataSource = foo;
ddlSite.DataTextField = "FOO";
ddlSite.DataValueField = "foo_ID";
ddlSite.DataBind();