asp.net下拉列表在服务器端始终没有选定的值

时间:2012-02-03 19:31:50

标签: asp.net vb.net drop-down-menu

我有像这样的asp.net下拉列表

 <asp:DropDownList width="95%" ID="RessourceComposantes" runat="server"    
       DataSourceID="Composantes" 
       DataTextField="Description" DataValueField="ComposanteID">
 </asp:DropDownList>

<asp:SqlDataSource ID="RessourceComposantes" runat="server" 
        ConnectionString="<%$ ConnectionStrings:OraEntities %>" 
        SelectCommand="SELECT [Blabla], [blablabla] FROM [blablablaa] 
        ORDER BY [blablablabla]">
</asp:SqlDataSource>

当我在服务器端执行dd_ressource_composante.selectedvalue时,我没有任何价值,这是正常的吗?总是如此 ””。

源代码如下:

     <select name="ctl00$Tab$dd_ressource_composante" id="ctl00_Tab_dd_ressource_composante" style="width:95%;">
        <option value="1">Composante</option>
        <option value="3">DGAG</option>
        <option value="2">DSF</option>
        <option value="5">Test</option>
        <option value="6">Tous</option>

        <option value="4">VMD</option>

    </select>

我只是试着填写我在vb.net中的下拉列表,我得到了相同的结果。下拉菜单已满,但当我进行回发时,我没有选择值

当我在下拉列表中设置断点时,在服务器端Actualy,项目计数为0.我不明白为什么......这就像这个项目中的第8个下拉列表,一切都是一样但是这个没有不行。

我没有对页面加载做任何绑定。它全部在aspx文件中

当我为下拉列表添加autopostback =“true”SelectedIndexChanged =“dd_ressource_composante_SelectedIndexChanged”时,它才有效。

dd_ressource_composante_SelectedIndexChanged中没有代码

这是服务器端的vb.net

谢谢

5 个答案:

答案 0 :(得分:2)

你在代码隐藏中调用你的dd_ressource_composantes.DataBind()方法在哪里?它在Page_Load事件中吗?如果是这样,你是否在IsPostback检查中包装了该语句,以便每次页面加载时都不绑定它?不这样做会在每次页面回发时重置您的DataSource和任何选定的值。

If (Not Page.IsPostBack) Then
    dd_ressource_composantes.DataBind()
End If

不是

' No IsPostBack check
dd_ressource_composantes.DataBind()

答案 1 :(得分:1)

此外,您的DataSourceID不是“RessourceComposantes”而不是“Composantes”,因为那是您的数据源的ID吗?

答案 2 :(得分:1)

设置SelectedValue时,该值必须与Value属性的值匹配。如果情况并非如此,那么无论如何,结果都是未定义的。

答案 3 :(得分:1)

如果你在page_load事件的某个地方调用DataBind()方法请注释,否则将其包装在

 IF NOT IsPostBack Then
   DataBind()
 EndIF

This problem is most likely caused by rebinding the control before the event you are using is fired。如果你得到selectedItem.Text,那么SelectedValue也应该在那里。

答案 4 :(得分:1)

那太奇怪了。那个控件在一个表中,我添加了一行像这样

tblRessourcesProjet.Rows.Insert(1, tr)

我将其更改为

tblRessourcesProjet.Rows.Add(tr)

我不太清楚为什么这是一个问题,但它现在有效。 谢谢大家!