Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dropdownlist postback not firing

22 views
Skip to first unread message

Gearóid

unread,
Mar 5, 2007, 6:17:33 AM3/5/07
to

Milosz Skalecki [MCAD]

unread,
Mar 5, 2007, 6:45:05 AM3/5/07
to
Howdy,
Show us how you bind the data. It seems you rebind data on every postback.
--
Milosz

Adlai Maschiach

unread,
Mar 5, 2007, 6:54:47 AM3/5/07
to
Strange

I have tried the following

<asp:DropDownList ID="DropDownListMake" runat="server"
CssClass="selectComparison" AutoPostBack="True"
OnSelectedIndexChanged="DropDownListMake_SelectedIndexChanged" >
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>

--------

protected void DropDownListMake_SelectedIndexChanged(object
sender,EventArgs e)
{
int x ;

if (!DropDownListMake.SelectedIndex.Equals("-1"))
x = Int32.Parse(DropDownListMake.SelectedValue);
}

--------

and it did work
perhaps the AutoPostBack="True"
doesn't fire if the DDL isn't bound to any data

-------------------------------------------
If my answer helped you please press "Yes" bellow

Adlai Maschiach
http://blogs.microsoft.co.il/blogs/adlaim/

Gearóid

unread,
Mar 5, 2007, 7:12:38 AM3/5/07
to
The bizarre thing is the AutoPostBack="True" does fire. If I place a
breakpoint in my code on the Page_Load it is hit after I select
something in the DropDownList. But when it hitsthe line to see if
it's a postback or not it says it isn't. If I hover over if(!
this.IsPostBack) it tells me IsPostBack is false.

So even the the postback has fired and the breakpoint has been
triggered in my Page_load method, it thinks it's not a postback.
That's what baffles me...

snippet of Page_Load to bind data...

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
LoadMakes();
}
else // postback
{
nMakeID = int.Parse(DropDownListMake.SelectedValue);
}
}


private void LoadMakes()
{
DataTable dtMakes = new NewBike().GetMakes("Bike");

ClearDropDowns(true, true);
PopulateDropDown(DropDownListMake, dtMakes, "makeid", "makename",
"Make");
}

private void PopulateDropDown(DropDownList ddlList, DataTable dtData,
string strValueField, string strTextField, string strDefaultPromt)
{
ddlList.DataSource = dtData;
ddlList.DataValueField = strValueField;
ddlList.DataTextField = strTextField;
ddlList.DataBind();
ddlList.Items.Insert(0, new ListItem("Choose " + strDefaultPromt,
"-1"));
ddlList.SelectedIndex = 0;
}

Adlai Maschiach

unread,
Mar 5, 2007, 7:32:15 AM3/5/07
to
Hi

each time you populate a DDL ( or every other control )
it's previous ViewState is Cleared/Ignored
that may be the cause for that
the SelectedIndexChange isn't fired
becuse according to the Page the contence has
change , thus irrelevant ( even if it's contence is the same )

-------------------------------------------

If my answer helped you please press "Yes" bellow

Adlai Maschiach
http://blogs.microsoft.co.il/blogs/adlaim/

Gearóid

unread,
Mar 5, 2007, 8:05:10 AM3/5/07
to
Thanks for your help. I got this sorted.

I have the following method

protected override object LoadPageStateFromPersistenceMedium()
{

LosFormatter Format = new LosFormatter();
//return Format.Deserialize (Request.Form["__VIEWSTATE"]);
string strSession = "";

if (Session["_ViewState"] != null)
{
strSession = Session["_ViewState"].ToString();
return Format.Deserialize(strSession);
}
else
{
return null;
}
}

This was being called in a basepage. Before it was called the
postback was there, but after it executed it was lost. It appears
this was clearing my viewstate, and in turn losing my postback


0 new messages