簡體   English   中英

來自c#的下拉菜單中的ArgumentOutOfRangeException

[英]ArgumentOutOfRangeException in dropdown from c#

我有兩個下拉列表,一個是靜態的( Requested ),另一個是動態的( Response )。“ Response ”取決於“ Requested ”下拉列表。我是新加入新框架的人。碼。

Ord.aspx

     <%@ Page Title="" Language="C#" AutoEventWireup="true" CodeBehind="o1.aspx.cs" Inherits="C.Portal.ord" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
        <div id="Order">
<table width="100%" border="0">

            <tr>
                        <td><asp:Label ID="Label0" runat="server" Text="Requested:* " /></td>           
                       <td>
                            <asp:RequiredFieldValidator ID="v1" ControlToValidate="ddlreq1" CssClass="error" InitialValue="" Display="Dynamic" SetFocusOnError="true" runat="server">
                                Please select request<br />
                            </asp:RequiredFieldValidator>

                            <asp:DropDownList ID="ddlreq1" Width="100%" 
                                TabIndex="15" AutoPostBack="true" 
                                onselectedindexchanged="ddlRequest_SelectedIndexChanged" runat="server">
                                <asp:ListItem></asp:ListItem>
                                <asp:ListItem>Req1</asp:ListItem>
                                <asp:ListItem>Req2</asp:ListItem>                      
                            </asp:DropDownList>
                        </td>
                    </tr>

                     <tr>
                        <td><asp:Label ID="Label1" runat="server" Text="Response :* " /></td>
                        <td>
                            <asp:RequiredFieldValidator ID="v2" ControlToValidate="ddlresp" CssClass="error" InitialValue="" Display="Dynamic" SetFocusOnError="true" runat="server">
                                Please select a color<br />
                            </asp:RequiredFieldValidator>                    
                            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                                <ContentTemplate>                
                                    <asp:DropDownList ID="ddlresp" DataTextField="ddlText" Width="100%" TabIndex="16" runat="server" />
                                 </ContentTemplate>
                                <Triggers> 
                                    <asp:AsyncPostBackTrigger ControlID="ddlreq1" EventName="SelectedIndexChanged" />
                                </Triggers>  
                             </asp:UpdatePanel>                    

                        </td>
                    </tr>

        </div>
</table>
    </asp:Content>

Ord.aspx.cs

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Web.Security;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Net.Mail;

    namespace C.Portal
    {
        public partial class ord : System.Web.UI.Page
        {
             protected void Page_Load(object sender, EventArgs e)
            { 
            // other code 
            if (!IsPostBack)
                {
                DataSet Color = new DataSet();
             Color.ReadXml(MapPath("Project/Color.xml"));
             ddlresp.DataSource = Color;
                  ddlresp.DataBind();
                }

            }
            protected void ddlRequest_SelectedIndexChanged(object sender, EventArgs e)
            {
             if (ddlRequest.SelectedValue != "")
              {
                var requestMatrix = (from f in db.RequestMatrixes
                                       where f.Type == ddlRequest.SelectedValue
                                       select f).SingleOrDefault();
                 if (!requestMatrix.testcolor)
                    {
                        ddlresp.SelectedValue = "None";
                        ddlresp.Enabled = false;
                    }
                    else
                    {
                        ddlresp.SelectedIndex = 0; // here I got a exception 
                        ddlresp.Enabled = true;
                    }
                }
            }

        }
    }

我在我的代碼異常詳細信息: 響應下拉列表不loaded.HOw加載響應下拉列表? 一些幫助我。

ddlresp'的SelectedIndex無效,因為它不存在於項目列表中。 參數名稱:值

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.ArgumentOutOfRangeException:'ddlresp'的SelectedIndex無效,因為它不存在於項目列表中。 參數名稱:值

源錯誤:

當前Web請求的執行期間生成了未處理的異常。 可以使用下面的異常堆棧跟蹤來標識有關異常的來源和位置的信息。

堆棧跟蹤:

[ArgumentOutOfRangeException:'ddlresp'的SelectedIndex無效,因為它不存在於項目列表中。 參數名稱:值]

使用DataBind()方法分配DataSource之后,需要綁定ddlresp 如果不調用DataBind則下拉列表中將沒有任何項目,設置SelectedIndex會引發異常

如果需要狀態,也可以將其放在!Page.IsPostBack塊中。

protected void Page_Load(object sender, EventArgs e)
{ 
   if(!Page.IsPostBack)
   {
     // other code 
     DataSet Color = new DataSet();
     Color.ReadXml(MapPath("Project/Color.xml"));
     ddlresp.DataSource = Color;
     ddlresp.DataBind();
   }
}

編輯您的html似乎也無效,您使用帶有表標簽的tr。

將兩個下拉菜單都放在UpdatePanel中,可以將表放在UpdatePanel中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM