2014-02-17 2 views
0

Здесь у меня есть 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 является ИНТ в базе данных здесь, как это определено в коде:

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(); 
Смежные вопросы