Проблема в использовании AutoPostback в asp.net c # - PullRequest
1 голос
/ 18 мая 2011

У меня есть два элемента управления текстовым полем с расширителем календаря и раскрывающимся списком, как показано ниже.

<asp:TextBox ID="txtStartDate" runat="server" ReadOnly="True"></asp:TextBox>

<asp:CalendarExtender ID="CalendarExtender1" TargetControlID="txtStartDate" 
    runat="server" Format="yyyy-MM-dd" />

<asp:TextBox ID="txtEndDate" runat="server" ReadOnly="True" 
             ontextchanged="txtEndDate_TextChanged">
</asp:TextBox>

<asp:CalendarExtender ID="txtEndDate_CalendarExtender" runat="server" 
                       Enabled="True" TargetControlID="txtEndDate" Format="yyyy-MM-dd">
</asp:CalendarExtender>

<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>

Что я хочу сделать, это когда пользователь выбирает дату в txtEndDate Я хочу вызвать функцию для загрузкиданные в DropDownList1, то есть DataBind DropDownList1.

Когда я устанавливаю AutoPostBack свойство txtEndDate в True и вызывает метод на txtEndDate_TextChanged, событие не запускается.

Где я иду не так, может кто-нибудь помочь.Я просто хочу загрузить DropDownList1, когда пользователь выбирает дату в txtEndDate.Что мне нужно сделать.

вот что я сделал в своем aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            String DB = "";
            String AccountID = "";
            if (Session["login"] != null && Session["db"] != null)
            {
                AccountID = Session["login"].ToString();
                DB = Session["db"].ToString();

                Label4.Text = AccountID;
            }
            else
            {
                Response.Redirect("log.aspx");
            }
        }
    }
    protected void txtEndDate_TextChanged(object sender, EventArgs e)
    {
       String databs = Session["db"].ToString();
       Response.Write(databs);
        ddlist1_crtno a = new ddlist1_crtno();
        a.filldropdown1(this.DropDownList1, databs);
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        // LOG OUT***********////////////
        Session.Abandon();
        Response.Redirect("log.aspx");  
    }
}

Я поместил то же самое событие в событие ButtonClick, и все работало нормально.

1 Ответ

1 голос
/ 18 мая 2011

Попробуйте удалить ReadOnly="true" из TextBox элемента управления.Это может решить вашу проблему.

Существует проблема с элементами управления TextBox, имеющими ReadOnly="true", что значение текстового поля теряется всякий раз, когда происходит PostBack, и именно поэтому событие не запускается.

Редактировать: Это известная проблема с текстовыми полями, которая пока не имеет решения.очевидно, есть обходные пути.

...