ItemTemplate 中的 ASP:DropDownList:为什么允许 SelectedValue 属性?
这段代码
<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”属性不能 以声明方式设置。
然而,这是数据绑定 GridView 的合法且常用的编辑模板。 SelectedValue
属性显然是在这里以声明方式设置的。
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
问题是:允许您以声明方式设置它的情况与不允许您以声明方式设置它的情况有什么区别? 该错误消息意味着它永远不会被允许。
This piece of code
<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>
yields this error:
The 'SelectedValue' property cannot be
set declaratively.
Yet, this is a legal and commonly used edit template for databound GridViews. The SelectedValue
attribute certainly appears to be declaratively set here.
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
The question is: what is the difference between the cases when you are allowed to set it declaratively and those in which you are not? The error message implies that it's never allowed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在标记中使用 SelectedValue='<%# "32" %>' 语法。(请注意以下示例中单引号和双引号的顺序):
或在 DataBinding 之后的代码隐藏中。(示例):
in markup use SelectedValue='<%# "32" %>' syntax .(note the order of single and then the double quotes in the following example ):
or in code-behind just after DataBinding .(example):
这意味着你无法通过设计器来设置它。
正确的方法是:
绑定方法起作用的原因是因为该值不是在设计模式下选择的,而是在控件绑定到数据源后在运行时选择的
DropDownList.SelectedValue 方法应该在运行时应用,因此会出现有关 not 的错误能够“装饰性”地设置它
It means you cannot set it through the designer.
The correct way is:
The reason the bound method works is because the value isn't selected in design mode but at runtime after the control is bound to a datasource
The DropDownList.SelectedValue method is meant to be applied at runtime hence the error about not being able to set it 'decoratively'