这段代码
<asp:DropDownList runat="server" ID="testdropdown" SelectedValue="2">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:DropDownList>
产生此错误:
'SelectedValue'属性不可以 以声明方式设置。
然而,这是数据绑定GridViews的合法且常用的编辑模板。 SelectedValue
属性肯定在这里以声明方式设置。
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
问题是:当你被允许以声明方式设置它而你不允许设置它时,有什么区别?错误消息暗示它永远不会被允许。
答案 0 :(得分:7)
这意味着您无法通过设计师进行设置。
正确的方法是:
<asp:DropDownList runat="server" ID="testdropdown">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2" Selected></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:DropDownList>
绑定方法工作的原因是因为在设计模式下未选择该值,但在控件绑定到数据源之后的运行时
DropDownList.SelectedValue方法意味着在运行时应用,因此无法将其设置为“装饰性”的错误
答案 1 :(得分:7)
使用SelectedValue ='&lt;%#“32”%&gt;语法。(请注意以下示例):
<asp:DropDownList ID="ddlField" SelectedValue='<%# "32" %>'
runat="server" DataTextField="Name" DataValueField="ID" >
</asp:DropDownList>
或在DataBinding之后的代码隐藏中。(示例):
ddlField.DataSource = Fields.SelectAll();
ddlField.DataBind();
ddlField.SelectedValue = "32";