这段代码
<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>
产生此错误:
The ‘SelectedValue’ property cannot be
set declaratively.
然而,这是一个合法且常用的数据绑定GridView的编辑模板. SelectedValue属性当然似乎在这里声明性地设置.
<EditItemTemplate> <asp:DropDownList runat="server" ID="GenreDropDownList" DataSourceID="GenreDataSource" DataValueField="GenreId" DataTextField="Name" SelectedValue='<%# Bind("Genre.GenreId") %>'> </asp:DropDownList> </EditItemTemplate>
问题是:当你被允许声明性地设置它们和你不属性的情况之间有什么区别?错误信息意味着它不会被允许.
解决方法
这意味着您无法通过设计器进行设置.
正确的方法是:
<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方法意在在运行时应用,因此无法将其设置为“装饰性”的错误