2016-04-04 3 views
0

У меня есть 2 dropdownlist на моей веб-форме, а второй синхронизирован с первым, основываясь на том, какое значение было выбрано.ASP.NET Dropdownlist вызывает проблему

Все работает хорошо между двумя из них и может использовать значения из них для выполнения моей функции.

Однако первый dropdownlist, похоже, влияет на мой ретранслятор и разбивки на страницы. В основном он продолжает увеличивать pageddatesource и очищает ретранслятор от любых данных?

SelectedIndexChanged предназначен только для обновления update.panel1, где находится второй раскрывающийся список, но я не уверен, как он еще больше увеличивает номера страниц и удаляет данные из репитера?

Это передний край с выпадающими списками.

<section id="section-search"> 
<div class="fleft"> 
Start Date: 
<asp:TextBox runat="server" ID="txtStartDate" CssClass="txt txt-sml"></asp:TextBox> 
    <ajaxToolkit:CalendarExtender ID="calStartDate" runat="server" PopupPosition="Right" Animated="true" TargetControlID="txtStartDate" /> 
End Date: 
<asp:TextBox runat="server" ID="txtEndDate" CssClass="txt txt-sml"></asp:TextBox> 
    <ajaxToolkit:CalendarExtender runat="server" ID="calEndDate" PopupPosition="Right" Animated="true" TargetControlID="txtEndDate"></ajaxToolkit:CalendarExtender> 
<hr /> 
Product Class: 
<asp:DropDownList ID="drpProductClass" runat="server" Width="230px" OnSelectedIndexChanged="drpProductClass_SelectedIndexChanged" AutoPostBack="true" /> 
    <hr /> 
<asp:UpdatePanel ID="updatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    Product: 
    <asp:DropDownList ID="drpProduct" runat="server" Width="230px" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</div> 
<div class="fright"> 
<asp:Button runat="server" ID="btnFilter" Text="Search" CssClass="submit" OnClick="btnFilter_Click"/> 
</div> 
</section> 

<section id="section-title"> 
<h1>Order Search</h1><h2></h2> 
</section> 

<section class="info-strip tr"> 
<asp:Literal ID="litResults" runat="server"></asp:Literal> 
</section> 

<section class="track-table"> 

<asp:Literal runat="server" ID="litMessage" Visible="false" Text="<div class='wysiwyg'><p>You currently have no orders...</p></div>"></asp:Literal> 

<asp:PlaceHolder runat="server" ID="phOrders">  
<%--<table> 
    <thead> 

    </thead> 
    <tbody>--%> 
    <asp:Repeater ID="rprOrders" runat="server" OnItemCommand="rprOrders_ItemCommand" > 

Вот мой код за

protected void SetupControl() 
{ 
    if (this.StopProcessing) 
    { 
    // Do not process 
    } 
    else 
    { 
    if (CMSContext.ViewMode == ViewModeEnum.LiveSite) 
    {  
     if(!Page.IsPostBack) 
     { 
     PopulateProductClass(); 
     PopulateProduct(); 
     PopulateOrders(); 
     } 
    } 
    } 
} 

protected void drpProductClass_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    CustomTableItemProvider ctip = new CustomTableItemProvider(); 

    UserInfo user = CooneenHelper.GetUserImpersonisationUser(); 
    QueryDataParameters qdp = new QueryDataParameters(); 
    qdp.Add("@UserID", user.UserID); 
    DataSet ds = gc.ExecuteQuery("CN_GetEmpIDByUID", qdp, QueryTypeEnum.StoredProcedure, true); 

    int emplID = Convert.ToInt32(ds.Tables[0].Rows[0]["UserEmployeeID"].ToString()); 

    if (drpProductClass.SelectedValue.ToString() != "0") 
    { 
    QueryDataParameters qdp2 = new QueryDataParameters(); 
    qdp2.Add("@WR_ClassID", Convert.ToInt32(drpProductClass.SelectedValue.ToString())); 
    qdp2.Add("@UserEmployeeID", emplID); 
    DataSet ds2 = gc.ExecuteQuery("CN_OrdersGetProductByClassID", qdp2, QueryTypeEnum.StoredProcedure, true); 

    drpProduct.ClearSelection(); 
    drpProduct.DataSource = ds2.Tables[1]; 
    drpProduct.DataTextField = "ProductName"; 
    drpProduct.DataValueField = "SKUNumber"; 
    drpProduct.DataBind(); 

    drpProduct.Items.Insert(0, new ListItem("-- Select Product --", "0")); 

    updatePanel1.Update();   
    } 
    else 
    { 
    drpProduct.ClearSelection(); 
    PopulateProduct();   
    } 
} 

private void PopulateOrders() 
{ 

    CustomerInfo ki = CustomerInfoProvider.GetCustomerInfoByUserID(CooneenHelper.GetUserImpersonisationID()); 
    int nKustomerID = ki.CustomerID; 
    DataTable dts = new DataTable(); 
    dts.Columns.Add("OrderDate", typeof(string)); 
    dts.Columns.Add("OrderNumber", typeof(string)); 
    dts.Columns.Add("OrderItemSKUName", typeof(string)); 
    dts.Columns.Add("OrderItemSKUID", typeof(string)); 
    dts.Columns.Add("OrderItemStatus", typeof(string)); 
    dts.Columns.Add("OrderItemUnitCount", typeof(string)); 

    QueryDataParameters qdp = new QueryDataParameters(); 
    qdp.Add("@CustomerID", nKustomerID); 
    DataSet ds = gc.ExecuteQuery("CN_OrderList", qdp, QueryTypeEnum.StoredProcedure, true); 

    foreach (DataRow dr in ds.Tables[0].Rows) 
    { 
    DataRow drNew = dts.NewRow(); 
    drNew["OrderDate"] = ValidationHelper.GetDateTime(dr["OrderDate"], DateTime.Now).ToShortDateString(); 
    drNew["OrderNumber"] = dr["OrderNumber"].ToString(); 
    drNew["OrderItemSKUName"] = dr["OrderItemSKUName"].ToString(); 
    drNew["OrderItemSKUID"] = dr["OrderItemSKUID"].ToString(); 
    drNew["OrderItemStatus"] = dr["OrderItemStatus"].ToString(); 
    drNew["OrderItemUnitCount"] = dr["OrderItemUnitCount"].ToString(); 
    dts.Rows.Add(drNew); 
    } 

    PagedDataSource pds = new PagedDataSource(); 
    pds.DataSource = dts.DefaultView; 
    //DataView view = dts.DefaultView; 

    //allow paging, set page size, and current page 
    pds.AllowPaging = true; 
    pds.PageSize = PerPage; 
    pds.CurrentPageIndex = CurrentPage; 

    //show # of current page in label 
    if (pds.PageCount > 1) litResults.Text += " - Showing page " + (CurrentPage + 1).ToString() + " of " + pds.PageCount.ToString(); 

    //disable prev/next buttons on the first/last pages 
    btnPrev.Enabled = !pds.IsFirstPage; 
    btnNext.Enabled = !pds.IsLastPage;    

    rprOrders.Visible = true;  

    rprOrders.DataSource = pds; 
    rprOrders.DataBind(); 

} 

ответ

0

У нас была аналогичная проблема, и никогда не мог понять причину этого, мы намечаются его ошибки в WebForms. Но мы смогли обойти проблему, установив ClientIDMode="AutoID" для элемента управления или страницы, и в итоге мы установили весь наш сайт таким образом, что обнаружили проблемы, с которыми это случилось. Дайте мне знать, если это сработает и для вас. Хотел бы я помочь.

+0

Спасибо за ответ. Я установил это на моем ретрансляторе как '' и он по-прежнему не помогает? :( – Kevin

+0

@Kevin Darn, извините, это был длинный снимок в темноте, но я подумал, что попробую. Вы могли бы попробовать поместить его на страницу и посмотреть. Если я правильно помню, мы положили AutoID ClientIDMode = AutoID "' на DropDownList (ы) – Tyler

+0

Еще нет радости :(Но спасибо за предложение – Kevin

Смежные вопросы