System.Web.HttpException:'不能在DropDownList

时间:2018-03-26 17:49:45

标签: javascript html asp.net

我意识到这个问题已经多次以各种形式提出,但我找不到解决方案来解决我的问题。

我正在写一个网站来记录死人的详细信息。我的网页上有一个标题下拉框和一个性别下拉框。

在数据库中,这些是链接的,我需要根据标题设置性别。

我有一个列表框,其中包含标题ID /性别ID链接以及使用此列表框从标题中查找性别的功能。

<asp:Label CssClass="LegacyLabel">Title</asp:Label>
<asp:ListBox ID="TitleSex" runat="server" CssClass="hidethis" SelectionMode="Single"></asp:ListBox>
<asp:DropDownList ID="LegatorTitle" runat="server" CssClass="LegacyDDL" TabIndex="2" onchange="setSex()"></asp:DropDownList>
<asp:Label CssClass="LegacyLabel">Sex</asp:Label>
<asp:DropDownList ID="LegatorSex" runat="server" CssClass="LegacyDDL" TabIndex="5"></asp:DropDownList>

<script>
function setSex() {
    var t = document.getelementbyid("<%=LegatorTitle.ClientID %>");
    var ts = document.getElementById("<%=TitleSex.ClientID %>");
    var s = document.getElementById("<%=LegatorSex.ClientID %>");
    //get title selectd value
    var tValue = t.options[t.selectedIndex].value;
    var opts = ts.options;
    //set the title sex selected value
    ts.selectedItem.selected = false;
    for (var z0 = 0; z0 < opts.length; z0++) {
        if (opts[z0].value == tValue) {
            ts.selectedIndex = z0;
            break;
        }
    }
    //get the title sex selected text
    var tsText = ts.options[ts.selectedIndex].text;
    opts = s.options;
    //set the sex selected value
    s.selectedItem.selected = false;
    for (z0 = 0; z0 < opts.length; z0++) {
        if (opts[z0].value == tsText) {
            s.selectedIndex = z0;
            break;
        }
    }
}
</script>

下拉列表和列表框是使用数据表

从Web服务设置的
dataTable = fcws.GetTitles(UNAME, PWORD)
LegatorTitle.Items.Clear()
LegatorTitle.DataSource = dataTable
LegatorTitle.DataTextField = "TitleName"
LegatorTitle.DataValueField = "TitleId"
LegatorTitle.DataBind()

TitleSex.Items.Clear()
TitleSex.DataSource = dataTable
TitleSex.DataTextField = "SexId"
TitleSex.DataValueField = "TitleId"
TitleSex.DataBind()
dataTable = fcws.GetTitles(UNAME, PWORD)
LegatorTitle.Items.Clear()
LegatorTitle.DataSource = dataTable
LegatorTitle.DataTextField = "TitleName"
LegatorTitle.DataValueField = "TitleId"
LegatorTitle.DataBind()

'sex
dataTable = fcws.GetSexes(UNAME, PWORD)
LegatorSex.Items.Clear()
LegatorSex.DataSource = dataTable
LegatorSex.DataTextField = "SexName"
LegatorSex.DataValueField = "SexId"
LegatorSex.DataBind()

我还打开了案例和案例结束日期以及状态(带有打开和关闭选项的下拉列表)

当我尝试加载打开的案例时,一切都很完美

当我尝试加载已关闭的案例时,我收到以下错误

    Server Error in '/' Application

    Cannot have multiple items selected in a DropDownList

    Source error

    Line 245:            var t = document.getelementbyid("<%=LegatorTitle.ClientID %>");
    Line 246:            var ts = document.getElementById("<%=TitleSex.ClientID %>");
--> Line 247:            var s = document.getElementById("<%=LegatorSex.ClientID %>"); <---
    Line 248:            //get title selected value
    Line 249:            var tValue = t.options[t.selectedIndex].value;

( - &gt; ...&lt; - 突出显示的行)

I cannot post images yet so here is a link to the error

我不明白的是: -

  1. 为什么错误发生在第一位
  2. 为什么仅对已结案例发生错误
  3. 为什么,当我换线时 &#39; var s = document.getElementById(&#34;&lt;%= LegatorSex.ClientID%&gt;&#34;);&#39; to&#39; var s = document.getElementById(&#34; LegatorSex&#34;);&#39;,错误移至行var ts = document.getElementById(&#34;&lt;%= TitleSex。 ClientID%&gt;&#34;); (如果我更改了上面代码中的所有行,则错误将移至上一行,其中&lt;%= xxx.ClientID%&gt;)
  4. 我已经检查了有用的响应(这就是为什么我在绑定它们之前清除列表以及为什么我在重新设置之前将selectedItem.selected设置为false)为彻头彻尾的无用(错误非常具体:你在下拉列表中无法进行多项选择。找到更符合您需求的另一个控件!)但似乎没有任何效果。

1 个答案:

答案 0 :(得分:0)

我找到了答案 (我感觉有点愚蠢,我之前没有发现过......)

作为工作的一部分,我不得不将案件状态默认为新案件打开。我添加的用于将案例状态设置为打开的代码正在针对所有案例运行,而不仅仅是新案例。

打开案例工作正常,因为选择已经设置为“打开”

非常感谢您的投入,非常抱歉将您的时间浪费在我的愚蠢上

我仍然不知道为什么错误会将失败的行报告为

'getelementbyid(“&lt;%= xxx.ClientID%&gt;”);'