我有一个绑定到 linq 数据源的下拉列表。此下拉列表显示所有弓箭手编号,除了那些在数据库中状态设置为 false 的弓箭手编号。
假设我有一条之前创建的记录,现在我想编辑现在设置为 false 的 Bowzer。我遇到了这个异常,我不知道如何处理它。
“bowzerddl”的 SelectedValue 无效,因为它不存在于项目列表中。
参数名称:值
这是我的 LinqDataSource 的代码
<asp:LinqDataSource ID="LinqBowzerDS" runat="server" ContextTypeName="ShippingWeb.ShippingDbDataContext"
EntityTypeName="" Select="new (bowzer_id, bowzer_no)" TableName="Bowzers"
OrderBy="bowzer_no" Where="expiry_date >= DateTime.Now && status==True">
一旦我单击详细信息视图的“编辑”按钮(我的下拉列表所在的位置),就会出现我之前提到的例外情况。有什么办法可以捕获这个异常吗?编辑后,仅显示那些状态为 True 的记录?
这是我的详细信息查看的代码
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" CellPadding="4"
DataSourceID="LinqDataSource1" Height="50px"
Width="363px"
DataKeyNames="challan_id" ForeColor="#333333" GridLines="None"
ondatabound="DetailsView1_DataBound" onmodechanged="DetailsView1_ModeChanged"
>
<asp:TemplateField HeaderText="Bowzer No">
<EditItemTemplate>
<asp:DropDownList ID ="bowzerddl" runat="server"
DataSourceID="LinqBowzerDS"
DataTextField="bowzer_no"
DataValueField="bowzer_id"
selectedValue='<%# bind("bowzer_id") %>'
AppendDataBoundItems="true"
>
<asp:ListItem Selected="True" Value="">(None)</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblbowzer" runat="server" Text='<%# Eval("Bowzer.Bowzer_no") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Fields>
<FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="White" HorizontalAlign="Center" BackColor="#284775" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
</asp:DetailsView>
我通过这个链接解决了这个问题答案16 http://go4answers.webhost4life.com/Example/dropdownlist-selectedvalue-which-94546.aspx
这对我们有用:
protected void PreventErrorOnbinding(object sender, EventArgs e)
{
dropdownlist theDropDownList = (DropDownList)sender;
theDropDownList.DataBinding -= new EventHandler(PreventErrorOnbinding);
theDropDownList.AppendDataBoundItems = true;
ListItem li = new ListItem("Make a selection >>","");
theDropDownList.Items.Insert(0, li);
try
{
theDropDownList.DataBind();
}
catch (ArgumentOutOfRangeException)
{
theDropDownList.SelectedValue = "";
}
}
在控件上添加 ondatabinding="PreventErrorOnbinding"
由于所选值设置为“”,因此它始终选择下拉列表中的第一项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)