2012-02-06 61 views
0

我有一个硬编码值的下拉列表:绑定下拉用硬编码值

<asp:DropDownList ID="BulletinTypeDropDown" runat="server"> 
    <asp:ListItem Selected="True" Text="--Select--" Value="--Select--"></asp:ListItem> 
    <asp:ListItem Text="News" Value="News"></asp:ListItem> 
    <asp:ListItem Text="report" Value="report"></asp:ListItem> 
    <asp:ListItem Text="System" Value="System"></asp:ListItem> 
    <asp:ListItem Text="Reminder" Value="Reminder"></asp:ListItem> 
</asp:DropDownList> 

我想用它来从数据库插入和编辑值。例如,在添加记录时,用户选择“报告”并将“报告”插入到数据库中。然后,如果用户由于db中的值为'report'而去编辑页面,那么下拉列表必须显示'report'被选中。 但我能够成功将值存储在数据库中,但在编辑页面中我无法检索所选页面。 我正在使用实体框架工作,所以,我厌倦了很多方式,但无法获得编辑页面中的值。 这是我试过的方式。

DropDown.SelectedValue = bulList.intype.ToString(); // intype是我从数据库中获取的值,它返回的是正确的值,但在DropDown.selectedvalue中传递null。

有人可以请帮我什么是我可以工作,以获得我的下拉列表中的值的其他方式。

感谢

+0

您在页面生命周期的哪个事件处理程序中尝试设置下拉列表值(Page_load,Button_click)?编辑页面如何获得该值?当你显示更多的代码时,它更容易。 – 2012-02-06 21:15:49

+0

我试图展现在page_load.I的下拉列表刚刚硬编码的值,并在下拉列表并在后面的代码我累了我只是做如下,如果(bulletinList.Bulletintype!= NULL){ BulletinTypeDropDown.SelectedValue = bulletinList.Bulletintype;} – user1098449 2012-02-06 21:18:15

+0

你什么时候从数据库设置读取值?也许你的下拉菜单在设置SelectedValue时没有硬编码的Items?在设置了SelectedValue的行上中断并检查Items.Length。 – 2012-02-06 21:19:45

回答

0

你必须找到在下拉列表的文本,设置所选属性为true 例:

//pass the string you want to set selected to true --> assuming in your case bulList.intype.ToString() 
BulletinTypeDropDown.Items.FindByText(bulList.intype.ToString()).Selected = true; 

您还可以通过使用FindByValue相似。点击此处了解详情:http://forums.asp.net/t/1004541.aspx/1

+0

我甚至试过这个,但它抛出一个错误,说没有设置对象实例的对象引用。 – user1098449 2012-02-06 20:41:44

+0

检查bulList.intype.ToString()是一些不为null的文本,它的值与您的DropDown列表中的项目相匹配。 – antar 2012-02-06 20:50:06

+0

bulList.intype.ToString()传递数据库中的确切值,但Dropdownlist始终传递--select--。 – user1098449 2012-02-06 21:11:18

0
BulletinTypeDropDown.SelectedValue = valueFromDb; 
+0

我做了同样的事情,但VlauefromDb给我从Db的价值,但BulletinTypeDropdown.selectedvalue不是从DB中分配值,它总是显示--select--值。 – user1098449 2012-02-06 21:13:33

+0

我的猜测是''DropDownList1_Load'正在从数据库中分配'SelectedValue'后被调用。设置一些断点并验证。 – Danny 2012-02-07 18:13:40

0

所以下拉列表停留在默认值,如果有可能找到页面加载内部代码中的绑定方法。
否则,如果bulList.intype正在返回值,我认为dropdownlist拒绝显示选定的值是没有办法的。可能会检查空间的返回值。试试这个:

string s = = bulList.intype.ToString().Trim(); 
DropDown.SelectedValue = s; 
+0

不幸的是,我试图通过分配修剪(),但它仍然显示我一样之前。字符串S显示我正确的价值,但是当涉及到DropDown.SelectedValue仍然显示我为 - 选择 - – user1098449 2012-02-06 21:27:55

+0

是你在你的代码中调用DataBind()方法? – Mubarek 2012-02-06 21:32:05

+0

不,我不使用数据绑定 – user1098449 2012-02-06 21:35:07

0

这里是灵魂,可能适合你。 所以创建你的下拉列表。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" 
     onload="DropDownList1_Load" > 
    </asp:DropDownList> 


protected void DropDownList1_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     List<string> DDLlist = new List<string>(); 
     DDLlist.Add("Report"); 
     DDLlist.Add("News"); 
     DropDownList1.DataSource = DDLlist; 
     DropDownList1.SelectedValue = "Report"; 
     DropDownList1.DataBind(); 
    } 

您可以添加到DDLlist以动态添加新项目。

+0

我试过这个,我得到了我想要的,但问题是在下拉列表中我看到所有的值分配给所有的值id's.but但我只想在dropdownlist不同的项目。 – user1098449 2012-02-07 16:35:04

+0

你能给我更多关于你想要出现在列表中的细节吗? – Ches 2012-02-07 21:48:48

+0

感谢您的帮助,但现在就开始工作。 – user1098449 2012-02-07 22:08:56