';detailsUserTitle';具有无效的SelectedValue,因为它不在项目列表中.参数名称
本文关键字:项目 列表 参数 detailsUserTitle 无效 因为 SelectedValue | 更新日期: 2023-09-27 18:20:56
DropDownList不断返回此错误:(
这是我的aspx代码
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataKeyNames="username" DataSourceID="SqlDataSource1" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2">
<EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<Fields>
<asp:TemplateField HeaderText="username" SortExpression="username">
<ItemTemplate>
<asp:Label ID="Label9" runat="server" Text='<%# Bind("username") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title" SortExpression="title">
<EditItemTemplate>
<asp:DropDownList ID="detailsUserTitle" runat="server" SelectedValue='<%# Bind("title") %>' DataSourceID="SqlDataSource1">
<asp:ListItem Value="-1">Select Title</asp:ListItem>
<asp:ListItem Value="Mr">Mr</asp:ListItem>
<asp:ListItem Value="Mrs">Mrs</asp:ListItem>
<asp:ListItem Value="Miss">Miss</asp:ListItem>
<asp:ListItem Value="Ms">Ms</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorTitle"
ControlToValidate="detailsUserTitle" runat="server" ErrorMessage="Title is a required field"
Text="*" ForeColor="Red" InitialValue="-1"></asp:RequiredFieldValidator>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("title") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("title") %>'></asp:Label>
</ItemTemplate>
我一直在网上寻求建议,但还没有一个对我有帮助的结论。请帮忙。我没有添加任何与此问题相关的代码。
感谢
您的问题是DDL属性SelectedValue='<%# Bind("title") %>'
您的SQL DataSource"SqlDataSource1"可能未返回来自Mr、Mrs、Miss或MS的任何值。
如果标题字段有不同的值,则会得到此错误
更新
您可以在绑定前验证标题字符串,如下所示。但是,我不建议这样做。我更喜欢在从数据源检索之前验证这些值。理想的解决方案是在找到DropDownList中的值之前,将其与同一组值绑定。这样您就不会错过任何东西。
以下是快速解决方案。:-)
SelectedValue='<%# (!string.IsNullOrEmpty(Bind("title")) || "Mr, Mrs, Miss, MS".IndexOf(Bind("title")) > -1) ? Bind("title") : "-1" %>'
更新2给你:-D
SelectedValue='<%# (!string.IsNullOrEmpty((string)Eval("title")) || "Mr, Mrs, Miss, MS".IndexOf((string)Eval("title")) > -1) ? (string)Eval("title") : "-1" %>'
如果答案能解决你的问题,请接受。祝你一切顺利!