2

我意识到您可以使用 SqlDataSource 在 gridview 中轻松设置下拉列表,但是仅包含列表项的有限列表呢?如果没有 DataSource,将 Bind 放入所选值似乎不起作用。这是我到目前为止所得到的一个例子。

<EditItemTemplate>
   <asp:DropDownList ID="Fund"  runat="server" SelectedValue='<%# Bind("Fund") %>' >
      <asp:ListItem  Value="">---</asp:ListItem>
      <asp:ListItem Value="Test1">Test</asp:ListItem>
      <asp:ListItem Value="Test2">Test2</asp:ListItem>
   </asp:DropDownList>
</EditItemTemplate>

这似乎是一个愚蠢的小问题,以至于我要在我的数据库中创建一个静态的 10 行表。

4

3 回答 3

3

最简单的解决方案是在代码中创建 aDictionary<TKey,TValue>并将其绑定到DropDownListor 如您提到的将其绑定到静态表...

示例代码:

Dictionary<string, string> list = new Dictionary<string, string>();
list.Add("item 1", "Item 1");
list.Add("item 2", "Item 2");
list.Add("item 3", "Item 3");
list.Add("item 4", "Item 4");

ddl.DataSource = list;
ddl.DataTextField = "Value";
ddl.DataValueField = "Key";
ddl.DataBind();
于 2012-07-05T15:20:36.137 回答
1

尝试这个:

Dictionary<string, string> items= new Dictionary<string, string>();
items.Add("-1","-Select-");
items.Add("Test1", "Test1");
items.Add("Test2", "Test2");
ddl.DataSource = items;
ddl.DataValueField = "Key";
ddl.DataTextField = "Value";
ddl.DataBind();
于 2012-07-05T15:24:36.120 回答
0

您想以DropDownList编程方式设置。我真的建议避免使用SqlDataSource控件的用户。它非常笨重,在重用方面不是很好。

以下代码使用实体框架通过用户名从数据库中检索数据。使用此函数,您可以将所需的数据绑定到 ,DropDownList而无需在SqlDataSource每次需要调用此过程时创建一个。

public List<Record> GetAllRecordsByUserName(string credentials)
{
    List<Record> recordList;
    using (CustomEntities context = new CustomEntities())
    {

        IQueryable<Section> recordQuery = from records in context.Records
                                              where records.UserName == credentials
                                              select records; 
        recordList = recordQuery.ToList<Record>();
    }
    return recordList;
}

public void BindDropDown()
{
    DropDownList1.DataSource = GetAllRecordsByUserName("test.user");
    DropDownList1.DataBind();
}
于 2012-07-05T15:48:07.860 回答