Are you doing something like this
protected void Page_Load(object sender, EventArgs e)
{
BindList();
}
In this case the selected value will be reset as the list gets binded againg before the buttone click event takes place.
Make sure that you bind you list only once, not in each and every postback like following.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindList();
}
}