我有像这样的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
谢谢
答案 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)
我不太清楚为什么这是一个问题,但它现在有效。 谢谢大家!